{"data":{"skill":{"slug":"aaron-he-zhu-influencer-discovery","name":"influencer-discovery","icon":"📦","repo":"https://github.com/aaron-he-zhu/aaron-marketing-skills/tree/main/influencer/discover/influencer-discovery","status":"approved","author":"aaron-he-zhu","authorVersion":"17.0.0","skillstoreRevision":1},"audit":{"id":"2cc8819d-8f3d-45c8-9e40-f85ad9c9d49e","skill_id":"8ce42884-e928-4530-962f-aefe3ada6716","version":7,"content_hash":"v3:d71c7417a35d5c2624161bd2fe8de8a41a362128:38dd1cabfa121f20f4670c8b918bf43be40dd9bda029f9bf89d091ef5da8629e:ddee6810b73c81cc2aa2e95166c1fd1774c685db7a7607850dcc550e1718615e:736b696c6c732f6161726f6e2d68652d7a68752f696e666c75656e6365722d646973636f76657279:d6c297d78aee5a02d066f75e5a7e14fd","risk_level":"medium","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 fences, inline code, and relative documentation links. Two findings remain because line 59 executes an unreviewed connector and requires an API key. The workflow also needs safeguards for untrusted public web content and stored creator contact data.","remediation":[{"issue":"The YouTube connector executes code outside the audited skill and reads an API key.","severity":"high","suggestion":"Include the connector in the audited package, validate handles with a strict allowlist, pass arguments without a shell, and restrict the key to YouTube Data API access."},{"issue":"Public profiles and websites may contain instructions aimed at the agent.","severity":"medium","suggestion":"State that web content is untrusted data, ignore embedded instructions, extract only requested facts, and preserve source links for verification."},{"issue":"Creator contact paths can be written to durable memory without lifecycle controls.","severity":"low","suggestion":"Store only public business contacts needed for the campaign, require permission, limit access, and define retention and deletion rules."}],"risk_factor_evidence":[{"factor":"env_access","evidence":[{"file":"references/creator-dossier.md","line_end":28,"line_start":28},{"file":"references/creator-dossier.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":59,"line_start":59}]},{"factor":"filesystem","evidence":[{"file":"references/platform-vetting.md","line_end":7,"line_start":7},{"file":"references/platform-vetting.md","line_end":8,"line_start":8},{"file":"references/platform-vetting.md","line_end":9,"line_start":9},{"file":"references/platform-vetting.md","line_end":10,"line_start":10},{"file":"references/platform-vetting.md","line_end":11,"line_start":11},{"file":"references/templates.md","line_end":3,"line_start":3},{"file":"references/templates.md","line_end":207,"line_start":207},{"file":"references/templates.md","line_end":281,"line_start":281},{"file":"references/templates.md","line_end":282,"line_start":282},{"file":"references/templates.md","line_end":283,"line_start":283},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":40,"line_start":40},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":61,"line_start":61},{"file":"SKILL.md","line_end":65,"line_start":65},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":87,"line_start":87},{"file":"SKILL.md","line_end":88,"line_start":88},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":90,"line_start":90},{"file":"SKILL.md","line_end":91,"line_start":91},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":98,"line_start":98},{"file":"SKILL.md","line_end":99,"line_start":99},{"file":"SKILL.md","line_end":105,"line_start":105},{"file":"SKILL.md","line_end":106,"line_start":106},{"file":"SKILL.md","line_end":107,"line_start":107},{"file":"SKILL.md","line_end":108,"line_start":108}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":24,"line_start":22},{"file":"SKILL.md","line_end":26,"line_start":24},{"file":"SKILL.md","line_end":29,"line_start":26},{"file":"SKILL.md","line_end":33,"line_start":29},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":50,"line_start":35},{"file":"SKILL.md","line_end":52,"line_start":50},{"file":"SKILL.md","line_end":53,"line_start":52},{"file":"SKILL.md","line_end":54,"line_start":53},{"file":"SKILL.md","line_end":55,"line_start":54},{"file":"SKILL.md","line_end":57,"line_start":55},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":74,"line_start":74}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":57,"line_start":57}]}],"critical_findings":[],"high_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":59,"line_start":59}],"confidence":0.82,"description":"**Measured YouTube metrics (free key)**: `python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Line 59 directs execution of a Python connector outside the scanned skill and substitutes a creator handle into a shell-style command. An untrusted handle or connector could cause command execution beyond the documented lookup."},{"title":"Generic API/secret keys","locations":[{"file":"SKILL.md","line_end":59,"line_start":59}],"confidence":0.62,"description":"**Measured YouTube metrics (free key)**: `python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.","review_kind":"capability","source_category":"env_access","source_severity":"high","confidence_reasoning":"Line 59 requires YOUTUBE_API_KEY for a connector whose implementation was not included in the scanned files. The use is plausible, but secret handling and destination controls cannot be verified, so this remains fail-closed."}],"medium_findings":[{"title":"Untrusted Web Content Has No Prompt-Injection Boundary","locations":[{"file":"SKILL.md","line_end":70,"line_start":68},{"file":"references/creator-dossier.md","line_end":28,"line_start":22}],"confidence":0.88,"description":"The workflow tells the agent to search and read public profiles, posts, and websites without directing it to treat embedded instructions as untrusted data. A malicious creator page could influence the agent's research or output.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The cited instructions explicitly require consuming open-web content, and no content-isolation guidance appears in the reviewed files. Exploitation depends on encountering a malicious page."}],"low_findings":[{"title":"Persistent Storage of Creator Contact Data","locations":[{"file":"SKILL.md","line_end":35,"line_start":34},{"file":"references/creator-dossier.md","line_end":75,"line_start":67}],"confidence":0.9,"description":"The workflow collects public business contact paths and stores roster-worthy creator records in durable memory. It does not define data minimization, retention, deletion, or access controls for this contact data.","review_kind":"security","source_category":"semantic","source_severity":"low","confidence_reasoning":"The files clearly specify contact discovery and durable record storage. The data is limited to public business channels, which reduces severity but does not remove privacy obligations."}],"dangerous_patterns":[],"files_scanned":4,"total_lines":600,"audit_model":"codex","audited_at":"2026-07-12T12:33:59.37+00:00","created_at":"2026-07-14T15:54:00.924928+00:00","static_findings":[{"id":"env_access:references/creator-dossier.md:28:configuration-library","file":"references/creator-dossier.md","pattern":"Configuration library","snippet":"`unconfirmed` rather than guessing — an honest gap is more useful than a fake fact.","category":"env_access","line_end":28,"severity":"low","line_start":28},{"id":"env_access:references/creator-dossier.md:74:configuration-library","file":"references/creator-dossier.md","pattern":"Configuration library","snippet":"6. **No public path found** — record `unconfirmed` and flag that outreach must","category":"env_access","line_end":74,"severity":"low","line_start":74},{"id":"blocker:references/creator-dossier.md:5:system-reconnaissance","file":"references/creator-dossier.md","pattern":"System reconnaissance","snippet":"public pages, the creator's own posts, and inputs the user shares. No paid tools,","category":"blocker","line_end":5,"severity":"low","line_start":5},{"id":"filesystem:references/platform-vetting.md:7:path-traversal-sequence","file":"references/platform-vetting.md","pattern":"Path traversal sequence","snippet":"| X / Twitter | [../../../references/platforms/x.md](../../../../references/platforms/x.md) | reply-","category":"filesystem","line_end":7,"severity":"high","line_start":7},{"id":"filesystem:references/platform-vetting.md:8:path-traversal-sequence","file":"references/platform-vetting.md","pattern":"Path traversal sequence","snippet":"| LinkedIn | [../../../references/platforms/linkedin.md](../../../../references/platforms/linkedin.m","category":"filesystem","line_end":8,"severity":"high","line_start":8},{"id":"filesystem:references/platform-vetting.md:9:path-traversal-sequence","file":"references/platform-vetting.md","pattern":"Path traversal sequence","snippet":"| TikTok | [../../../references/platforms/tiktok.md](../../../../references/platforms/tiktok.md) | v","category":"filesystem","line_end":9,"severity":"high","line_start":9},{"id":"filesystem:references/platform-vetting.md:10:path-traversal-sequence","file":"references/platform-vetting.md","pattern":"Path traversal sequence","snippet":"| YouTube | [../../../references/platforms/youtube.md](../../../../references/platforms/youtube.md) ","category":"filesystem","line_end":10,"severity":"high","line_start":10},{"id":"filesystem:references/platform-vetting.md:11:path-traversal-sequence","file":"references/platform-vetting.md","pattern":"Path traversal sequence","snippet":"| Reddit | [../../../references/platforms/reddit.md](../../../../references/platforms/reddit.md) | k","category":"filesystem","line_end":11,"severity":"high","line_start":11},{"id":"filesystem:references/templates.md:3:path-traversal-sequence","file":"references/templates.md","pattern":"Path traversal sequence","snippet":"Fill-in scaffolds for each step of [SKILL.md](../SKILL.md): the search-criteria","category":"filesystem","line_end":3,"severity":"high","line_start":3},{"id":"filesystem:references/templates.md:207:path-traversal-sequence","file":"references/templates.md","pattern":"Path traversal sequence","snippet":"> defensible score is computed downstream by [fit-scorer](../../fit-scorer/SKILL.md).","category":"filesystem","line_end":207,"severity":"high","line_start":207},{"id":"filesystem:references/templates.md:281:path-traversal-sequence","file":"references/templates.md","pattern":"Path traversal sequence","snippet":"1. Review top recommendations with [fit-scorer](../../fit-scorer/SKILL.md)","category":"filesystem","line_end":281,"severity":"high","line_start":281},{"id":"filesystem:references/templates.md:282:path-traversal-sequence","file":"references/templates.md","pattern":"Path traversal sequence","snippet":"2. Develop outreach strategy with [outreach-manager](../../../activate/outreach-manager/SKILL.md)","category":"filesystem","line_end":282,"severity":"high","line_start":282},{"id":"filesystem:references/templates.md:283:path-traversal-sequence","file":"references/templates.md","pattern":"Path traversal sequence","snippet":"3. Create campaign briefs with [brief-generator](../../../plan/brief-generator/SKILL.md)","category":"filesystem","line_end":283,"severity":"high","line_start":283},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":24,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":26,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":29,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":33,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Reads**: brand/product, niche or category, target platforms, follower range, engagement floor, l","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Writes**: discovery results to `memory/influencer/influencer-discovery/YYYY-MM-DD-<topic>.md` — ","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Promotes**: durable facts (top-tier handles, confirmed niche/platform mix, competitor-saturated ","category":"external_commands","line_end":50,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Where a tool *could* sharpen results, use `~~` connector placeholders:","category":"external_commands","line_end":52,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~influencer database` — bulk discovery, follower/engagement metrics, audience demographics.","category":"external_commands","line_end":53,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~social platform analytics` — native creator-marketplace data, trending sounds, related accounts","category":"external_commands","line_end":54,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~CRM` — import the shortlist and dedupe against existing partners.","category":"external_commands","line_end":55,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `~~audience overlap` — estimate creator-audience vs. brand-audience match.","category":"external_commands","line_end":57,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Keyless candidate-card metadata (oEmbed)**: YouTube (`https://www.youtube.com/oembed?url=<video-ur","category":"external_commands","line_end":57,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Measured YouTube metrics (free key)**: `python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Save the report to `memory/influencer/influencer-discovery/YYYY-MM-DD-<topic>.md` and, with permissi","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"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\": \"17.0.0\", \"discipline\": \"influencer\", \"phase\": \"disc","category":"network","line_end":13,"severity":"low","line_start":13},{"id":"network:SKILL.md:57:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Keyless candidate-card metadata (oEmbed)**: YouTube (`https://www.youtube.com/oembed?url=<video-ur","category":"network","line_end":57,"severity":"low","line_start":57},{"id":"filesystem:SKILL.md:33:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- **Reads**: brand/product, niche or category, target platforms, follower range, engagement floor, l","category":"filesystem","line_end":33,"severity":"high","line_start":33},{"id":"filesystem:SKILL.md:40:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- **Primary next skill**: [fit-scorer](../fit-scorer/SKILL.md) — score and rank the discovered candi","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":"> Emit the standard shape from [skill-contract.md §Handoff Summary Format](../../../references/skill","category":"filesystem","line_end":44,"severity":"high","line_start":44},{"id":"filesystem:SKILL.md:59:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**Measured YouTube metrics (free key)**: `python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.","category":"filesystem","line_end":59,"severity":"high","line_start":59},{"id":"filesystem:SKILL.md:61:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"See [CONNECTORS.md](../../../CONNECTORS.md) for the free/keyless recipe per category and the opt-in ","category":"filesystem","line_end":61,"severity":"high","line_start":61},{"id":"filesystem:SKILL.md:65:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Each step has a fill-in block in [references/templates.md](references/templates.md) — copy the match","category":"filesystem","line_end":65,"severity":"high","line_start":65},{"id":"filesystem:SKILL.md:74:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Save the report to `memory/influencer/influencer-discovery/YYYY-MM-DD-<topic>.md` and, with permissi","category":"filesystem","line_end":74,"severity":"high","line_start":74},{"id":"filesystem:SKILL.md:87:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [skill-contract.md](../../../references/skill-contract.md) — shared contract and Handoff Summary f","category":"filesystem","line_end":87,"severity":"high","line_start":87},{"id":"filesystem:SKILL.md:88:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [state-model.md](../../../references/state-model.md) — memory tiers and save-path conventions.","category":"filesystem","line_end":88,"severity":"high","line_start":88},{"id":"filesystem:SKILL.md:89:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [CONNECTORS.md](../../../CONNECTORS.md) — free/keyless data recipes and opt-in MCP layer.","category":"filesystem","line_end":89,"severity":"high","line_start":89},{"id":"filesystem:SKILL.md:90:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- C3 benchmark at [references/c3/scoring-architecture.md](../../../references/c3/scoring-architectur","category":"filesystem","line_end":90,"severity":"high","line_start":90},{"id":"filesystem:SKILL.md:91:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- Siblings in the discover phase: [fit-scorer](../fit-scorer/SKILL.md), [audience-mapper](../audienc","category":"filesystem","line_end":91,"severity":"high","line_start":91},{"id":"filesystem:SKILL.md:95:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**Primary**: [fit-scorer](../fit-scorer/SKILL.md) — score and rank the discovered candidates with we","category":"filesystem","line_end":95,"severity":"high","line_start":95},{"id":"filesystem:SKILL.md:98:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [competitor-tracker](../../plan/competitor-tracker/SKILL.md) — when discovery surfaced competitor-","category":"filesystem","line_end":98,"severity":"high","line_start":98},{"id":"filesystem:SKILL.md:99:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [audience-mapper](../audience-mapper/SKILL.md) — when the target audience is still fuzzy and crite","category":"filesystem","line_end":99,"severity":"high","line_start":99},{"id":"filesystem:SKILL.md:105:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [audience-mapper](../audience-mapper/SKILL.md) - Define who to reach","category":"filesystem","line_end":105,"severity":"high","line_start":105},{"id":"filesystem:SKILL.md:106:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [fit-scorer](../fit-scorer/SKILL.md) - Score and rank discovered influencers","category":"filesystem","line_end":106,"severity":"high","line_start":106},{"id":"filesystem:SKILL.md:107:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [competitor-tracker](../../plan/competitor-tracker/SKILL.md) - Find competitor influencers","category":"filesystem","line_end":107,"severity":"high","line_start":107},{"id":"filesystem:SKILL.md:108:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [outreach-manager](../../activate/outreach-manager/SKILL.md) - Contact discovered influencers","category":"filesystem","line_end":108,"severity":"high","line_start":108},{"id":"env_access:SKILL.md:59:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"**Measured YouTube metrics (free key)**: `python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/connectors/youtube.","category":"env_access","line_end":59,"severity":"high","line_start":59}],"finding_verdicts":[{"id":"env_access:references/creator-dossier.md:28:configuration-library","reason":"The line uses the word `unconfirmed` as a reporting status for missing public facts. It does not access environment variables, configuration, or credentials.","verdict":"false_positive","confidence":0.99},{"id":"env_access:references/creator-dossier.md:74:configuration-library","reason":"The line uses the word `unconfirmed` as a reporting status for missing public facts. It does not access environment variables, configuration, or credentials.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/creator-dossier.md:5:system-reconnaissance","reason":"The line limits research to public pages, creator posts, and user-provided inputs. It contains no system reconnaissance or instruction to inspect the host environment.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:7:path-traversal-sequence","reason":"Line 7 is a Markdown link to a documented platform playbook. It does not resolve a user-controlled path or instruct arbitrary filesystem access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:8:path-traversal-sequence","reason":"Line 8 is a Markdown link to a documented platform playbook. It does not resolve a user-controlled path or instruct arbitrary filesystem access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:9:path-traversal-sequence","reason":"Line 9 is a Markdown link to a documented platform playbook. It does not resolve a user-controlled path or instruct arbitrary filesystem access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:10:path-traversal-sequence","reason":"Line 10 is a Markdown link to a documented platform playbook. It does not resolve a user-controlled path or instruct arbitrary filesystem access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:11:path-traversal-sequence","reason":"Line 11 is a Markdown link to a documented platform playbook. It does not resolve a user-controlled path or instruct arbitrary filesystem access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:3:path-traversal-sequence","reason":"Line 3 uses a relative Markdown link between skill documentation files. The traversal sequence is link navigation, not runtime filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:207:path-traversal-sequence","reason":"Line 207 uses a relative Markdown link between skill documentation files. The traversal sequence is link navigation, not runtime filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:281:path-traversal-sequence","reason":"Line 281 uses a relative Markdown link between skill documentation files. The traversal sequence is link navigation, not runtime filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:282:path-traversal-sequence","reason":"Line 282 uses a relative Markdown link between skill documentation files. The traversal sequence is link navigation, not runtime filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:283:path-traversal-sequence","reason":"Line 283 uses a relative Markdown link between skill documentation files. The traversal sequence is link navigation, not runtime filesystem traversal.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown code-fence delimiters around example user prompts. They do not invoke Ruby, a shell, or any executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown code-fence delimiters around example user prompts. They do not invoke Ruby, a shell, or any executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown code-fence delimiters around example user prompts. They do not invoke Ruby, a shell, or any executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown code-fence delimiters around example user prompts. They do not invoke Ruby, a shell, or any executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"Line 33 uses inline Markdown code formatting for skill names, operations, or fixed memory paths. It is not shell backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"Line 34 uses inline Markdown code formatting for skill names, operations, or fixed memory paths. It is not shell backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"Line 35 uses inline Markdown code formatting for skill names, operations, or fixed memory paths. It is not shell backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"Line 50 formats an optional connector placeholder with Markdown backticks. The placeholder is not an executable command and contains no command arguments.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"Line 52 formats an optional connector placeholder with Markdown backticks. The placeholder is not an executable command and contains no command arguments.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"Line 53 formats an optional connector placeholder with Markdown backticks. The placeholder is not an executable command and contains no command arguments.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"Line 54 formats an optional connector placeholder with Markdown backticks. The placeholder is not an executable command and contains no command arguments.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"Line 55 formats an optional connector placeholder with Markdown backticks. The placeholder is not an executable command and contains no command arguments.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Line 57 formats official oEmbed URLs and connector labels as inline Markdown. It contains no Ruby or shell command execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"Line 59 directs execution of a Python connector outside the scanned skill and substitutes a creator handle into a shell-style command. An untrusted handle or connector could cause command execution beyond the documented lookup.","verdict":"confirmed","severity":"high","confidence":0.82},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"Line 74 names fixed memory paths, an operation value, and a registry script in prose. It requires permission and authorization but does not provide shell backtick syntax or interpolate a command.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:10:hardcoded-url","reason":"Line 10 contains the public GitHub project homepage in skill metadata. It does not instruct a request, transmit data, or embed a secret.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:13:hardcoded-url","reason":"Line 13 contains the public GitHub project homepage in skill metadata. It does not instruct a request, transmit data, or embed a secret.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:57:hardcoded-url","reason":"Line 57 documents official YouTube, TikTok, and X oEmbed endpoints for public post metadata. The URLs are transparent, keyless, and do not send credentials.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:SKILL.md:33:path-traversal-sequence","reason":"Line 33 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:40:path-traversal-sequence","reason":"Line 40 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:44:path-traversal-sequence","reason":"Line 44 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:59:path-traversal-sequence","reason":"The traversal sequence on line 59 appears only in a Markdown link to connector documentation; the fixed connector command is adjudicated separately. No arbitrary path input is described.","verdict":"false_positive","confidence":0.97},{"id":"filesystem:SKILL.md:61:path-traversal-sequence","reason":"Line 61 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:65:path-traversal-sequence","reason":"Line 65 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:74:path-traversal-sequence","reason":"Line 74 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:87:path-traversal-sequence","reason":"Line 87 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:88:path-traversal-sequence","reason":"Line 88 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:89:path-traversal-sequence","reason":"Line 89 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:90:path-traversal-sequence","reason":"Line 90 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:91:path-traversal-sequence","reason":"Line 91 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:95:path-traversal-sequence","reason":"Line 95 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:98:path-traversal-sequence","reason":"Line 98 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:99:path-traversal-sequence","reason":"Line 99 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:105:path-traversal-sequence","reason":"Line 105 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:106:path-traversal-sequence","reason":"Line 106 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:107:path-traversal-sequence","reason":"Line 107 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:108:path-traversal-sequence","reason":"Line 108 contains a relative Markdown link or a fixed, skill-defined memory path. It does not accept user-controlled traversal segments or request unrestricted filesystem access.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:59:generic-api-secret-keys","reason":"Line 59 requires YOUTUBE_API_KEY for a connector whose implementation was not included in the scanned files. The use is plausible, but secret handling and destination controls cannot be verified, so this remains fail-closed.","verdict":"confirmed","severity":"high","confidence":0.62}],"semantic_findings":[{"title":"Untrusted Web Content Has No Prompt-Injection Boundary","severity":"medium","locations":[{"file":"SKILL.md","line_end":70,"line_start":68},{"file":"references/creator-dossier.md","line_end":28,"line_start":22}],"confidence":0.88,"description":"The workflow tells the agent to search and read public profiles, posts, and websites without directing it to treat embedded instructions as untrusted data. A malicious creator page could influence the agent's research or output.","confidence_reasoning":"The cited instructions explicitly require consuming open-web content, and no content-isolation guidance appears in the reviewed files. Exploitation depends on encountering a malicious page."},{"title":"Persistent Storage of Creator Contact Data","severity":"low","locations":[{"file":"SKILL.md","line_end":35,"line_start":34},{"file":"references/creator-dossier.md","line_end":75,"line_start":67}],"confidence":0.9,"description":"The workflow collects public business contact paths and stores roster-worthy creator records in durable memory. It does not define data minimization, retention, deletion, or access controls for this contact data.","confidence_reasoning":"The files clearly specify contact discovery and durable record storage. The data is limited to public business channels, which reduces severity but does not remove privacy obligations."}],"subject_marketplace_commit_sha":"d71c7417a35d5c2624161bd2fe8de8a41a362128","subject_content_hash":"38dd1cabfa121f20f4670c8b918bf43be40dd9bda029f9bf89d091ef5da8629e","subject_tree_hash":"ddee6810b73c81cc2aa2e95166c1fd1774c685db7a7607850dcc550e1718615e","subject_plugin_path":"skills/aaron-he-zhu/influencer-discovery","audit_payload_hash":"d6c297d78aee5a02d066f75e5a7e14fd","confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":"d71c7417a35d5c2624161bd2fe8de8a41a362128","contentHash":"38dd1cabfa121f20f4670c8b918bf43be40dd9bda029f9bf89d091ef5da8629e","treeHash":"ddee6810b73c81cc2aa2e95166c1fd1774c685db7a7607850dcc550e1718615e","pluginPath":"skills/aaron-he-zhu/influencer-discovery","auditPayloadHash":"d6c297d78aee5a02d066f75e5a7e14fd"},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":2,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":true}}