{"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":null,"skillstoreRevision":null},"audit":{"id":"9df3e89c-0aaa-434f-9063-47bd006435c8","skill_id":"8ce42884-e928-4530-962f-aefe3ada6716","version":5,"content_hash":"v2:b9e5ae9c7a884b8b0bc6894c293164039a0aa79d:db2bea411b4e801724f6a44ae85c52641f097a35b1e52a41a4d7bff9bbc1dbdb:01e6751b224b88f915bf95c4aa9018bc594654b954fd816c557482e5338c8077:b34846bd3d02f5a9093844e3523dd094","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 Markdown formatting or relative documentation links with no executable traversal. Two real risks remain: unsafe filename interpolation and an external connector command. The workflow also stores aggregated creator profile and contact data without retention guidance.","remediation":[{"issue":"The report filename includes a user-derived topic without a required sanitization rule.","severity":"high","suggestion":"Convert topics to a strict slug, reject path separators and traversal tokens, and verify the resolved path remains inside the intended memory directory."},{"issue":"The workflow directs the agent to run a connector script outside the reviewed skill files with a user-derived handle.","severity":"medium","suggestion":"Include the connector in the audited package, validate handles, pass arguments without shell interpolation, and require confirmation before command execution."},{"issue":"Creator contact details and profile attributes are aggregated into persistent memory without retention or minimization rules.","severity":"medium","suggestion":"Store only campaign-required public data, document sources, restrict access, define deletion periods, and avoid retaining sensitive attributes unless necessary."}],"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":"Path traversal sequence","locations":[{"file":"SKILL.md","line_end":74,"line_start":74}],"confidence":0.86,"description":"Save the report to `memory/influencer/influencer-discovery/YYYY-MM-DD-<topic>.md` and promote top-ti","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The report path includes a user-derived topic placeholder without sanitization. A topic containing separators or traversal tokens could redirect the write outside the intended directory."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":59,"line_start":59}],"confidence":0.84,"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":"The line explicitly directs the agent to execute a Python connector outside the reviewed files. The handle placeholder lacks a required validation or argument-safety rule."},{"title":"Persistent Creator Profile and Contact Aggregation","locations":[{"file":"references/creator-dossier.md","line_end":43,"line_start":30},{"file":"references/creator-dossier.md","line_end":75,"line_start":62},{"file":"SKILL.md","line_end":35,"line_start":33},{"file":"SKILL.md","line_end":74,"line_start":74}],"confidence":0.95,"description":"The workflow collects creator identity, audience, brand-safety, partnership, and public contact details, then stores selected records in persistent memory without retention guidance.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The cited sections explicitly define profile, contact, and persistence fields. The data is public, but the aggregation and retention risk is clear."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":4,"total_lines":600,"audit_model":"codex","audited_at":"2026-07-10T11:04:42.004+00:00","created_at":"2026-07-11T00:02:30.827068+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 promote top-ti","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\": \"16.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 promote top-ti","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 literal status label `unconfirmed` for missing public facts. It does not access environment variables or a configuration library.","verdict":"false_positive","confidence":0.99},{"id":"env_access:references/creator-dossier.md:74:configuration-library","reason":"The line tells the agent to record `unconfirmed` when no public contact path exists. No environment or configuration access occurs.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/creator-dossier.md:5:system-reconnaissance","reason":"The text limits research to public pages and user-provided inputs. It does not request system reconnaissance or host inspection.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/platform-vetting.md:7:path-traversal-sequence","reason":"The traversal sequence appears only in a Markdown link to an X platform reference. It is not used for runtime file access.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/platform-vetting.md:8:path-traversal-sequence","reason":"The traversal sequence is a static Markdown link to a LinkedIn reference document. No user input controls the path.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/platform-vetting.md:9:path-traversal-sequence","reason":"The traversal sequence is a static Markdown link to a TikTok reference document. It does not perform a filesystem operation.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/platform-vetting.md:10:path-traversal-sequence","reason":"The traversal sequence is a static Markdown link to a YouTube reference document. It is documentation navigation only.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/platform-vetting.md:11:path-traversal-sequence","reason":"The traversal sequence is a static Markdown link to a Reddit reference document. It cannot be influenced by user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/templates.md:3:path-traversal-sequence","reason":"The line links from the references folder back to SKILL.md. It is a fixed documentation path, not file traversal logic.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:references/templates.md:207:path-traversal-sequence","reason":"The relative path is a fixed Markdown link to the fit-scorer skill. It does not read or write a user-selected path.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/templates.md:281:path-traversal-sequence","reason":"The relative path is a documentation link in a next-steps list. It does not cause runtime filesystem traversal.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/templates.md:282:path-traversal-sequence","reason":"The relative path is a fixed link to the outreach-manager documentation. No path value is built from external input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:references/templates.md:283:path-traversal-sequence","reason":"The relative path is a fixed link to the brief-generator documentation. It is not an executable filesystem instruction.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The detected backticks are a Markdown fence around a natural-language prompt example. They do not invoke Ruby or a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"This line closes a Markdown example block. No executable command or shell substitution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The detected token starts a Markdown prompt example. The enclosed text is an influencer search request, not code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"This is the closing fence of a Markdown prompt example. It cannot execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"Inline backticks format skill and memory path names in prose. They are not shell execution syntax in this Markdown context.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"Inline backticks format intended output paths and skill names. The separate filename traversal concern is covered by the filesystem verdict.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks mark a fixed memory filename in descriptive prose. No external command is invoked.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The backticks introduce a connector placeholder convention. They do not perform shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The text is a formatted placeholder for an optional influencer database connector. It contains no command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"The text is a formatted placeholder for optional social analytics. It does not invoke an executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The inline code span labels an optional CRM connector. It is not a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The inline code span labels an audience-overlap connector placeholder. No executable syntax is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Backticks format official oEmbed endpoint examples and connector labels. The line does not instruct shell execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"The line explicitly directs the agent to execute a Python connector outside the reviewed files. The handle placeholder lacks a required validation or argument-safety rule.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"Backticks format memory paths and a skill name in prose. The separate unsafe filename interpolation is covered by the filesystem verdict.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:10:hardcoded-url","reason":"The URL is repository homepage metadata. It does not trigger a network request or transmit data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The URL appears inside static author metadata. It is not used as an execution or exfiltration endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:57:hardcoded-url","reason":"The listed endpoints are official oEmbed services used for public post metadata. No secret or unrelated local data is sent.","verdict":"false_positive","confidence":0.92},{"id":"filesystem:SKILL.md:33:path-traversal-sequence","reason":"The line names fixed memory directories and fixed relative documentation links. It does not construct a path from user input.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:40:path-traversal-sequence","reason":"The sequence appears in a fixed Markdown link to the fit-scorer skill. It is not runtime path traversal.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:44:path-traversal-sequence","reason":"The sequence is a fixed documentation link to the shared skill contract. No filesystem operation is specified.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:59:path-traversal-sequence","reason":"The connector path is rooted under the fixed CLAUDE_PLUGIN_ROOT environment variable and contains no traversal token. Command execution is adjudicated separately.","verdict":"false_positive","confidence":0.94},{"id":"filesystem:SKILL.md:61:path-traversal-sequence","reason":"The relative sequence is a static Markdown link to connector documentation. It does not accept a user-controlled path.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:65:path-traversal-sequence","reason":"The line uses a local Markdown link to templates within the skill. No traversal sequence or dynamic path exists.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:74:path-traversal-sequence","reason":"The report path includes a user-derived topic placeholder without sanitization. A topic containing separators or traversal tokens could redirect the write outside the intended directory.","verdict":"confirmed","severity":"high","confidence":0.86},{"id":"filesystem:SKILL.md:87:path-traversal-sequence","reason":"The relative sequence is a fixed Markdown reference to the shared skill contract. It is documentation navigation only.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:88:path-traversal-sequence","reason":"The relative sequence is a fixed Markdown link to the state model. No user-controlled filesystem access occurs.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:89:path-traversal-sequence","reason":"The relative sequence is a fixed Markdown link to connector documentation. It cannot redirect a runtime file operation.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:90:path-traversal-sequence","reason":"The relative path is a fixed documentation link to a scoring reference. It is not constructed from external input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:91:path-traversal-sequence","reason":"The detected sequences are fixed Markdown links to sibling skills. They do not execute file reads or writes.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:95:path-traversal-sequence","reason":"The relative path is a fixed Markdown link to fit-scorer. It is not a user-controlled runtime path.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:98:path-traversal-sequence","reason":"The relative path is a fixed link to competitor-tracker documentation. It does not perform filesystem traversal.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:99:path-traversal-sequence","reason":"The relative path is a fixed link to audience-mapper documentation. No path value is derived from user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:105:path-traversal-sequence","reason":"The sequence is a static Markdown link to a related skill. It is not executable path traversal.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:106:path-traversal-sequence","reason":"The sequence is a static Markdown link to fit-scorer. It does not control a runtime filesystem operation.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:107:path-traversal-sequence","reason":"The sequence is a static Markdown link to competitor-tracker. It cannot be modified by user input.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:108:path-traversal-sequence","reason":"The sequence is a static Markdown link to outreach-manager. It is documentation navigation, not file access.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:59:generic-api-secret-keys","reason":"The line names YOUTUBE_API_KEY for authenticated YouTube metrics and does not expose its value. No instruction sends the key to an unrelated destination.","verdict":"false_positive","confidence":0.84}],"semantic_findings":[{"title":"Persistent Creator Profile and Contact Aggregation","severity":"medium","locations":[{"file":"references/creator-dossier.md","line_end":43,"line_start":30},{"file":"references/creator-dossier.md","line_end":75,"line_start":62},{"file":"SKILL.md","line_end":35,"line_start":33},{"file":"SKILL.md","line_end":74,"line_start":74}],"confidence":0.95,"description":"The workflow collects creator identity, audience, brand-safety, partnership, and public contact details, then stores selected records in persistent memory without retention guidance.","confidence_reasoning":"The cited sections explicitly define profile, contact, and persistence fields. The data is public, but the aggregation and retention risk is clear."}],"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":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":2,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}