{"data":{"skill":{"slug":"aaron-he-zhu-budget-pacing-monitor","name":"budget-pacing-monitor","icon":"📦","repo":"https://github.com/aaron-he-zhu/aaron-marketing-skills/tree/main/ad/scale/budget-pacing-monitor","status":"approved","author":"aaron-he-zhu","authorVersion":"19.0.0","skillstoreRevision":2},"audit":{"id":"8ae3f6cc-f5ab-4d64-91cd-3b530e7322f9","skill_id":"10210454-a956-424b-b7a8-176a6e1b5d51","version":7,"content_hash":"v3:adcb3549b15782055d0beb6d29f113d20de08f92:b9efdc0b81d3ef5fd260171f2550074b80d4b4e8b7c6992ce1982dc8cb44357e:3d29f3ca3204c335a9475b200df0fdb810f872407db02231b0d9c451d205a53e:736b696c6c732f6161726f6e2d68652d7a68752f6275646765742d706163696e672d6d6f6e69746f72:e0e232b30cddd2e04c8f6d8e518658c5","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 alerts are false positives caused by Markdown code formatting, relative documentation links, and descriptive advertising-analysis text. One documented ledger command interpolates a campaign placeholder without quoting or validation, which can permit shell command injection if executed with adversarial input. No prompt-injection language or data-exfiltration intent was found.","remediation":[{"issue":"Unquoted campaign value in the ledger command","severity":"high","suggestion":"Do not construct a shell command from a campaign name. Pass it as a separately quoted argument through a non-shell process API, or restrict it to an allowlisted identifier format before execution."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":26,"line_start":22},{"file":"SKILL.md","line_end":30,"line_start":26},{"file":"SKILL.md","line_end":33,"line_start":30},{"file":"SKILL.md","line_end":34,"line_start":33},{"file":"SKILL.md","line_end":36,"line_start":34},{"file":"SKILL.md","line_end":46,"line_start":36},{"file":"SKILL.md","line_end":47,"line_start":46},{"file":"SKILL.md","line_end":57,"line_start":47},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":60,"line_start":58},{"file":"SKILL.md","line_end":62,"line_start":60},{"file":"SKILL.md","line_end":62,"line_start":62},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":75,"line_start":74},{"file":"SKILL.md","line_end":81,"line_start":75}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":13,"line_start":13}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":40,"line_start":40},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":53,"line_start":53},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":81,"line_start":81}]}],"critical_findings":[],"high_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":57,"line_start":57}],"confidence":0.88,"description":"3. **Snapshot spend to the ledger.** Record cumulative spend and elapsed-flight so the delta is comp","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The documented shell command inserts the campaign placeholder as an unquoted argument. A campaign value containing shell metacharacters could alter the command when an agent executes the instruction."}],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":82,"audit_model":"claude","audited_at":"2026-07-26T09:59:28.672+00:00","created_at":"2026-07-28T02:00:57.271009+00:00","static_findings":[{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Reads an in-flight campaign's spend against its intended target curve and returns a pacing verdict (","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```text","category":"external_commands","line_end":26,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":30,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Expected output**: a pacing read for one campaign or flight — cumulative spend vs the target curve","category":"external_commands","line_end":33,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Writes**: a user-facing pacing table plus a reusable pacing summary storable under `memory/ad/bu","category":"external_commands","line_end":34,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Promotes**: a fired reallocation trigger, the projected end-of-flight spend, and the next pacing","category":"external_commands","line_end":36,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Primary next skill**: use the `Next Best Skill` below.","category":"external_commands","line_end":46,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~ad platform` (own data) — campaign report CSV exported from the native ad manager: spend by day","category":"external_commands","line_end":47,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~web analytics` (GA4) — Traffic-acquisition export, optional, only to sanity-check that pacing c","category":"external_commands","line_end":57,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Snapshot spend to the ledger.** Record cumulative spend and elapsed-flight so the delta is comp","category":"external_commands","line_end":57,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Compute percent-to-pace.** Compare cumulative spend against where the target curve says it shou","category":"external_commands","line_end":60,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. **Decide the verdict and the reallocation trigger.** Verdict: **On-track** (pace inside the band)","category":"external_commands","line_end":62,"severity":"medium","line_start":60},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Label every figure **Measured** (export), **User-provided**, or **Estimated** (projection at current","category":"external_commands","line_end":62,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Ask \"Save these results for future sessions?\" If yes, write to `memory/ad/budget-pacing-monitor/` us","category":"external_commands","line_end":66,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [scripts/connectors/README.md](../../../scripts/connectors/README.md) — `ledger.py` record / trend","category":"external_commands","line_end":75,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [CONNECTORS.md](../../../CONNECTORS.md) · [SECURITY.md](../../../SECURITY.md) — `~~ad platform` ow","category":"external_commands","line_end":81,"severity":"medium","line_start":75},{"id":"network:SKILL.md:10:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: \"https://github.com/aaron-he-zhu/aaron-marketing-skills\"","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"network:SKILL.md:13:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"metadata: {\"author\": \"aaron-he-zhu\", \"version\": \"19.0.0\", \"discipline\": \"ad\", \"phase\": \"scale\", \"geo","category":"network","line_end":13,"severity":"low","line_start":13},{"id":"filesystem:SKILL.md:40:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"> Emit the standard shape from [skill-contract.md §Handoff Summary Format](../../../references/skill","category":"filesystem","line_end":40,"severity":"high","line_start":40},{"id":"filesystem:SKILL.md:44:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"All integrations optional (see [CONNECTORS.md](../../../CONNECTORS.md)). Inputs come from the user's","category":"filesystem","line_end":44,"severity":"high","line_start":44},{"id":"filesystem:SKILL.md:53:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Treat every fetched or exported file as **untrusted input** per [SECURITY.md](../../../SECURITY.md) ","category":"filesystem","line_end":53,"severity":"high","line_start":53},{"id":"filesystem:SKILL.md:66:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Ask \"Save these results for future sessions?\" If yes, write to `memory/ad/budget-pacing-monitor/` us","category":"filesystem","line_end":66,"severity":"high","line_start":66},{"id":"filesystem:SKILL.md:70:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [ROAS Benchmark](../../../references/roas-benchmark.md) — the **S** (Spend-efficiency) dimension: ","category":"filesystem","line_end":70,"severity":"high","line_start":70},{"id":"filesystem:SKILL.md:71:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [Measurement & Attribution Protocol](../../../references/measurement-protocol.md) — learning-phase","category":"filesystem","line_end":71,"severity":"high","line_start":71},{"id":"filesystem:SKILL.md:72:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [budget-optimizer](../../../influencer/target/budget-optimizer/SKILL.md) — sets the initial alloca","category":"filesystem","line_end":72,"severity":"high","line_start":72},{"id":"filesystem:SKILL.md:73:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [ad-account-auditor](../../activate/ad-account-auditor/SKILL.md) — the auditor-class gate that com","category":"filesystem","line_end":73,"severity":"high","line_start":73},{"id":"filesystem:SKILL.md:74:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [scripts/connectors/README.md](../../../scripts/connectors/README.md) — `ledger.py` record / trend","category":"filesystem","line_end":74,"severity":"high","line_start":74},{"id":"filesystem:SKILL.md:75:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [CONNECTORS.md](../../../CONNECTORS.md) · [SECURITY.md](../../../SECURITY.md) — `~~ad platform` ow","category":"filesystem","line_end":75,"severity":"high","line_start":75},{"id":"filesystem:SKILL.md:79:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**Primary**: if a reallocation trigger **fired**, hand off to [budget-optimizer](../../../influencer","category":"filesystem","line_end":79,"severity":"high","line_start":79},{"id":"filesystem:SKILL.md:81:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Alternates: if the pace gap looks like a structural problem (broken tracking, systemic over-delivery","category":"filesystem","line_end":81,"severity":"high","line_start":81},{"id":"blocker:SKILL.md:6:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"description: 'Use when the user asks to \"check pacing\", \"am I over/under-spending\", \"is this campaig","category":"blocker","line_end":6,"severity":"low","line_start":6},{"id":"blocker:SKILL.md:11:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"when_to_use: \"Use when monitoring an in-flight campaign's spend against its intended target curve: r","category":"blocker","line_end":11,"severity":"low","line_start":11},{"id":"blocker:SKILL.md:18:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Reads an in-flight campaign's spend against its intended target curve and returns a pacing verdict (","category":"blocker","line_end":18,"severity":"low","line_start":18},{"id":"blocker:SKILL.md:57:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"3. **Snapshot spend to the ledger.** Record cumulative spend and elapsed-flight so the delta is comp","category":"blocker","line_end":57,"severity":"low","line_start":57},{"id":"blocker:SKILL.md:62:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Label every figure **Measured** (export), **User-provided**, or **Estimated** (projection at current","category":"blocker","line_end":62,"severity":"low","line_start":62}],"finding_verdicts":[{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The documented shell command inserts the campaign placeholder as an unquoted argument. A campaign value containing shell metacharacters could alter the command when an agent executes the instruction.","verdict":"confirmed","severity":"high","confidence":0.88},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown inline-code delimiters or fenced-code markers in documentation. This line does not execute a Ruby or shell command.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:10:hardcoded-url","reason":"This is a repository homepage or metadata URL, not a network request. The skill contains no instruction to send data to that URL.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:13:hardcoded-url","reason":"This is a repository homepage or metadata URL, not a network request. The skill contains no instruction to send data to that URL.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:40:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:44:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:53:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:66:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:70:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:71:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:72:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:73:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:74:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:75:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:79:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:81:path-traversal-sequence","reason":"The sequence appears only in static relative Markdown links to repository documentation or related skills. It is not a runtime path constructed from user input.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:6:system-reconnaissance","reason":"The text describes analysis of user-provided advertising performance data. It does not enumerate the host system, network, or credentials.","verdict":"false_positive","confidence":0.97},{"id":"blocker:SKILL.md:11:system-reconnaissance","reason":"The text describes analysis of user-provided advertising performance data. It does not enumerate the host system, network, or credentials.","verdict":"false_positive","confidence":0.97},{"id":"blocker:SKILL.md:18:system-reconnaissance","reason":"The text describes analysis of user-provided advertising performance data. It does not enumerate the host system, network, or credentials.","verdict":"false_positive","confidence":0.97},{"id":"blocker:SKILL.md:57:system-reconnaissance","reason":"The text describes analysis of user-provided advertising performance data. It does not enumerate the host system, network, or credentials.","verdict":"false_positive","confidence":0.97},{"id":"blocker:SKILL.md:62:system-reconnaissance","reason":"The text describes analysis of user-provided advertising performance data. It does not enumerate the host system, network, or credentials.","verdict":"false_positive","confidence":0.97}],"semantic_findings":[],"subject_marketplace_commit_sha":"adcb3549b15782055d0beb6d29f113d20de08f92","subject_content_hash":"b9efdc0b81d3ef5fd260171f2550074b80d4b4e8b7c6992ce1982dc8cb44357e","subject_tree_hash":"3d29f3ca3204c335a9475b200df0fdb810f872407db02231b0d9c451d205a53e","subject_plugin_path":"skills/aaron-he-zhu/budget-pacing-monitor","audit_payload_hash":"e0e232b30cddd2e04c8f6d8e518658c5","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"adcb3549b15782055d0beb6d29f113d20de08f92","contentHash":"b9efdc0b81d3ef5fd260171f2550074b80d4b4e8b7c6992ce1982dc8cb44357e","treeHash":"3d29f3ca3204c335a9475b200df0fdb810f872407db02231b0d9c451d205a53e","pluginPath":"skills/aaron-he-zhu/budget-pacing-monitor","auditPayloadHash":"e0e232b30cddd2e04c8f6d8e518658c5"},"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/aaron-he-zhu-budget-pacing-monitor/audits/7/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}