{"data":{"skill":{"slug":"aaron-he-zhu-performance-monitor","name":"performance-monitor","icon":"📦","repo":"https://github.com/aaron-he-zhu/aaron-marketing-skills/tree/main/seo-geo/monitor/performance-monitor","status":"approved","author":"aaron-he-zhu","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"7b0800b5-9023-4549-9d83-d36e05ee070f","skill_id":"1396854e-ba99-4ffa-a77c-f18e833f0bf6","version":4,"content_hash":"v2:0519034dad657fb1f7706e0550e962beeda73fdf:e221b6ee4dcee316bc093ad3eaee9027ed319e7876843eda609020c66916781f:ca1c7d8f7a001558d6bd090456e96ee675eee26d6c9fede50d6894ff1ab989b9:8bd4a7284853824f881b1cf2f32ef561","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 findings are Markdown formatting, fixed relative documentation links, or SEO report terms misclassified as security issues. One finding is confirmed: the measurement loop suggests running a local Python connector with user-provided metric values, which requires permission and argument handling.","remediation":[{"issue":"External connector command in the measurement loop","severity":"medium","suggestion":"Require explicit user confirmation before running ledger.py, sanitize domain arguments, and document the expected local script path."},{"issue":"Markdown links use parent-directory paths","severity":"low","suggestion":"Replace parent-directory links with marketplace-safe references or package the referenced guidance inside the skill bundle."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":36,"line_start":26},{"file":"SKILL.md","line_end":38,"line_start":36},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":46,"line_start":45},{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":49,"line_start":48},{"file":"SKILL.md","line_end":54,"line_start":49},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":142,"line_start":142},{"file":"SKILL.md","line_end":158,"line_start":157},{"file":"SKILL.md","line_end":160,"line_start":158}]},{"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":22,"line_start":22},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":129,"line_start":129},{"file":"SKILL.md","line_end":142,"line_start":142},{"file":"SKILL.md","line_end":151,"line_start":151},{"file":"SKILL.md","line_end":157,"line_start":157},{"file":"SKILL.md","line_end":160,"line_start":160}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":76,"line_start":76}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":63,"line_start":63}],"confidence":0.72,"description":"**Zero-dependency measurement loop** (both modes): every reported change or fired alert should come ","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line instructs the agent to run python3 against a connector script with domain and metric arguments. It appears legitimate, but it is still external command execution using user-provided values."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":6,"total_lines":651,"audit_model":"codex","audited_at":"2026-07-09T12:19:14.286+00:00","created_at":"2026-07-09T13:32:03.540092+00:00","static_findings":[{"id":"blocker:references/kpi-definitions.md:13:system-reconnaissance","file":"references/kpi-definitions.md","pattern":"System reconnaissance","snippet":"| Organic search | Pages indexed | Valid indexed pages in Search Console | Close to intended indexab","category":"blocker","line_end":13,"severity":"low","line_start":13},{"id":"blocker:references/report-templates.md:76:system-reconnaissance","file":"references/report-templates.md","pattern":"System reconnaissance","snippet":"| Indexation | Valid indexed / excluded errors | [values] | [values] | [change] | [status] | [action","category":"blocker","line_end":76,"severity":"low","line_start":76},{"id":"blocker:references/report-templates.md:79:system-reconnaissance","file":"references/report-templates.md","pattern":"System reconnaissance","snippet":"| Schema | Valid / warning / error pages | [counts] | [counts] | [change] | [status] | [action] |","category":"blocker","line_end":79,"severity":"low","line_start":79},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"One monitor skill, two modes. **`report`** builds a stakeholder-facing multi-metric snapshot of what","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Mode set:** `report` (multi-metric snapshot, absorbed from performance-reporter) · `alert` (forwar","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```text","category":"external_commands","line_end":36,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":38,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Shortest valid invocation: `performance-monitor <domain>` (mode inferred). Output: **report** return","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Expected output**: mode `report` → a delta-based multi-metric report/dashboard; mode `alert` → an ","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Reads**: prior baselines and current performance data. `report` reads current + prior-period met","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Writes**: a user-facing monitoring deliverable plus a reusable summary storable under `memory/mo","category":"external_commands","line_end":46,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Promotes**: significant changes, confirmed anomalies, durable thresholds, and follow-up actions;","category":"external_commands","line_end":46,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `report`: each in-scope section (traffic, rankings, GEO, authority, backlinks, content) is present","category":"external_commands","line_end":49,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `alert`: each chosen alert category has a named trigger, threshold, and priority; a Critical/High/","category":"external_commands","line_end":54,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Emit the standard shape from [skill-contract.md §Handoff Summary Format](../../../references/skill","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Zero-dependency measurement loop** (both modes): every reported change or fired alert should come ","category":"external_commands","line_end":63,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Mode ambiguous** — the request fits neither past-tense (\"report on last month\") nor future-tense","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Step 0 — Select mode.** Read `--mode` if given. Otherwise infer: past-tense / \"how did we do\" / \"月","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Ask \"Save these results?\" If yes, write to `memory/monitoring/` using filename `YYYY-MM-DD-<topic>.m","category":"external_commands","line_end":142,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- After **report** — a change needs ongoing monitoring → run this skill in `alert` mode. A section m","category":"external_commands","line_end":158,"severity":"medium","line_start":157},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- After **alert** — a reporting cadence is requested → run this skill in `report` mode. Standalone a","category":"external_commands","line_end":160,"severity":"medium","line_start":158},{"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\": \"seo-geo\", \"phase\": \"monitor","category":"network","line_end":13,"severity":"low","line_start":13},{"id":"filesystem:SKILL.md:22:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**Scope guard — what this skill does NOT do:** it does not compute the CORE-EEAT content score or ru","category":"filesystem","line_end":22,"severity":"high","line_start":22},{"id":"filesystem:SKILL.md:54: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":54,"severity":"high","line_start":54},{"id":"filesystem:SKILL.md:58:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"All integrations optional (see [CONNECTORS.md](../../../CONNECTORS.md)). Tier 1 (keyless) works for ","category":"filesystem","line_end":58,"severity":"high","line_start":58},{"id":"filesystem:SKILL.md:63:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"**Zero-dependency measurement loop** (both modes): every reported change or fired alert should come ","category":"filesystem","line_end":63,"severity":"high","line_start":63},{"id":"filesystem:SKILL.md:89:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"4. **Keyword Rankings** — position ranges, distribution change, top improvements/declines, SERP feat","category":"filesystem","line_end":89,"severity":"high","line_start":89},{"id":"filesystem:SKILL.md:129:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"A reported delta or a fired alert is only evidence if it beats a control over a **fixed readback win","category":"filesystem","line_end":129,"severity":"high","line_start":129},{"id":"filesystem:SKILL.md:142:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Ask \"Save these results?\" If yes, write to `memory/monitoring/` using filename `YYYY-MM-DD-<topic>.m","category":"filesystem","line_end":142,"severity":"high","line_start":142},{"id":"filesystem:SKILL.md:151:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [Measurement & Attribution Protocol](../../../references/measurement-protocol.md) — readback windo","category":"filesystem","line_end":151,"severity":"high","line_start":151},{"id":"filesystem:SKILL.md:157:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- After **report** — a change needs ongoing monitoring → run this skill in `alert` mode. A section m","category":"filesystem","line_end":157,"severity":"high","line_start":157},{"id":"filesystem:SKILL.md:160:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Termination: the visited-set and `max-depth: 3` rules from [skill-contract.md §Termination rules](..","category":"filesystem","line_end":160,"severity":"high","line_start":160},{"id":"env_access:SKILL.md:76:configuration-library","file":"SKILL.md","pattern":"Configuration library","snippet":"- An alert category the user did not mention — leave it unconfigured; do not add alerts they did not","category":"env_access","line_end":76,"severity":"low","line_start":76},{"id":"blocker:SKILL.md:38:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Shortest valid invocation: `performance-monitor <domain>` (mode inferred). Output: **report** return","category":"blocker","line_end":38,"severity":"low","line_start":38},{"id":"blocker:SKILL.md:76:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- An alert category the user did not mention — leave it unconfigured; do not add alerts they did not","category":"blocker","line_end":76,"severity":"low","line_start":76},{"id":"blocker:SKILL.md:80:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"**Step 0 — Select mode.** Read `--mode` if given. Otherwise infer: past-tense / \"how did we do\" / \"月","category":"blocker","line_end":80,"severity":"low","line_start":80}],"finding_verdicts":[{"id":"blocker:references/kpi-definitions.md:13:system-reconnaissance","reason":"The line defines an SEO indexation KPI for Search Console reporting. It does not instruct system reconnaissance or collection of host environment details.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/report-templates.md:76:system-reconnaissance","reason":"The line is a report table placeholder for indexation status. It is SEO reporting content, not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/report-templates.md:79:system-reconnaissance","reason":"The line is a technical SEO schema status placeholder. It does not request host, network, or credential discovery.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"The backticks mark literal mode names such as report and alert in Markdown. There is no shell command or Ruby execution context.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"The backticks format mode labels in prose. No command is executed and no interpreter is invoked.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"This is a fenced text block containing example user prompts. It is not executable code and contains no shell instructions.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The finding lands on the end of a Markdown example block and nearby prose. It does not contain command execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The line shows a skill invocation and output description in Markdown. It does not run a shell or execute user-controlled code.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticks format report and alert mode names. This is descriptive text, not executable syntax.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The line uses backticks for mode labels while describing input data. It does not request an external command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The line describes a user-facing deliverable and a storage path. It contains no command invocation or shell metacharacter use.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The line references a Markdown memory file as documentation. It does not execute a command.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The backticks identify report and alert completion criteria. The content is reporting guidance, not code execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"This is a continuation of alert completion criteria and a documentation link. It does not instruct shell execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The line references a shared handoff-summary document. The backticks are Markdown formatting, not an execution primitive.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The line instructs the agent to run python3 against a connector script with domain and metric arguments. It appears legitimate, but it is still external command execution using user-provided values.","verdict":"confirmed","severity":"medium","confidence":0.72},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The backticks format mode option labels for a clarification prompt. There is no external process invocation.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The line references a command-line style mode flag as user input syntax. It does not tell the agent to execute a command.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"The line describes a filename pattern and asks before saving. It does not invoke a shell or external interpreter.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","reason":"The line uses backticks for mode labels while describing next-skill routing. It contains no command execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","reason":"The line uses backticks for mode labels in routing guidance. It does not run an external command.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:10:hardcoded-url","reason":"The URL is homepage metadata pointing to the source repository. It is not used for network access or data transfer.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The URL appears inside metadata for the skill homepage. There is no request instruction or exfiltration path.","verdict":"false_positive","confidence":0.97},{"id":"filesystem:SKILL.md:22:path-traversal-sequence","reason":"The sequences are Markdown links to neighboring skill documentation. They are fixed relative references, not user-controlled filesystem paths.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:54:path-traversal-sequence","reason":"The line links to a shared skill-contract reference file. It does not construct or traverse paths from user input.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:58:path-traversal-sequence","reason":"The parent-directory sequence is a documentation link to CONNECTORS.md. It is not a file read, write, or traversal primitive.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:63:path-traversal-sequence","reason":"The detected traversal text is from fixed documentation links to measurement and connector references. The filesystem concern on this line is better covered by the confirmed external-command verdict.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:SKILL.md:89:path-traversal-sequence","reason":"The line links to the rank-tracker skill as routing guidance. It is a fixed Markdown link and not arbitrary path traversal.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:129:path-traversal-sequence","reason":"The line references a shared measurement protocol by a fixed relative Markdown link. No user-controlled path is accepted.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:142:path-traversal-sequence","reason":"The line permits saving only after asking the user and uses a fixed memory/monitoring path. The relative link in the same line is documentation, not traversal.","verdict":"false_positive","confidence":0.89},{"id":"filesystem:SKILL.md:151:path-traversal-sequence","reason":"The traversal sequence is a static reference link to a measurement protocol document. It is not an unsafe filesystem operation.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:157:path-traversal-sequence","reason":"The line contains fixed Markdown links to sibling skills for routing. No untrusted path traversal is requested.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:160:path-traversal-sequence","reason":"The line references shared termination rules through a fixed relative link. It does not read or write arbitrary files.","verdict":"false_positive","confidence":0.93},{"id":"env_access:SKILL.md:76:configuration-library","reason":"The line says not to add alert categories the user did not request. It does not access environment variables or configuration secrets.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:38:system-reconnaissance","reason":"The line describes the skill output and a monitoring handoff path. It does not request system information or host reconnaissance.","verdict":"false_positive","confidence":0.95},{"id":"blocker:SKILL.md:76:system-reconnaissance","reason":"The line limits alert configuration to categories the user mentioned. It is a privacy-preserving guard, not reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:80:system-reconnaissance","reason":"The line instructs mode selection from the user request. It does not probe the operating system, network, or environment.","verdict":"false_positive","confidence":0.95}],"semantic_findings":[],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}