{"data":{"skill":{"slug":"locusintelligence-dauagency-keyword-picker","name":"keyword-picker","icon":"📦","repo":"https://github.com/locusintelligence-dauagency/reach-skills/tree/2b10a6be9b9b9a990ae0beb360a21476fad41918/skills/keyword-picker","status":"approved","author":"locusintelligence-dauagency","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"5fa053a9-0ecc-4794-a5fc-001b8a6aef33","skill_id":"22d0671c-b400-421b-b6e1-1c8454e53531","version":1,"content_hash":"v3:5e1f762ecf28b75c366ed9b67053b444b2eb9ffd:bf941decb96664fce12ac142cc3279acac280762c5269d4c774b1aee7012aed0:13b49f3f630b25cb979503b186c200341a85ef37390d17fae81eb9f713990d5c:736b696c6c732f6c6f637573696e74656c6c6967656e63652d6461756167656e63792f6b6579776f72642d7069636b6572:38c85c369df2ef2f770f4bc0b58b1d66","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 15 static findings are false positives: Markdown backticks, privacy prose, and legitimate Reach URLs do not establish command execution or unsafe networking. The workflow requires exact owner approval, limits data use, and rejects instructions embedded in tool results. No evidence found of prompt injection, credential theft, or unauthorized data disclosure in the reviewed instructions; hosted server behavior remains outside this repository.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":40,"line_start":40},{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":51,"line_start":51},{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":54,"line_start":54}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":45,"line_start":45}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":77,"audit_model":"codex","audited_at":"2026-10-10T22:51:23.555+00:00","created_at":"2026-10-11T03:53:36.208327+00:00","static_findings":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Server URL: `https://reach.locus-intelligence.com/api/mcp` (remote, Streamable HTTP, OAuth sign-in","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Pick the location.** Call `get_account`. If there is more than one location, ask which one. Sto","category":"external_commands","line_end":30,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Real demand.** Call `get_performance` for the last 90 days (`dateRange` as `YYYY-MM-DD`). Read ","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Current tracking.** Call `get_visibility` with `sections: [\"summary\"]`. List each tracked keywo","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"7. **Apply.** Call `track_keywords` with `action: \"track\"` or `\"untrack\"`, the approved `keywords` (","category":"external_commands","line_end":40,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"8. **Read back.** Call `get_visibility` with `sections: [\"summary\"]` and confirm the list.","category":"external_commands","line_end":41,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Never call `track_keywords` without an explicit yes to the exact keywords and the action.","category":"external_commands","line_end":49,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- At most 3 keyword runs or drafts can run at once per business. On `rate_limited`, tell the owner `","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- On an upgrade refusal, say what was blocked and which plan (`requiredPlan`) allows it, point to Pl","category":"external_commands","line_end":51,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- On `listing_only`, relay the message and `connectUrl`, and stop.","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the owner asks for something Reach cannot do, offer to send it with `request_feature`: show the","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"network:SKILL.md:26:python-http-libraries","file":"SKILL.md","pattern":"Python HTTP libraries","snippet":"- Use only the customer fields needed for the owner's task. Keep private contact details and unrelat","category":"network","line_end":26,"severity":"low","line_start":26},{"id":"network:SKILL.md:15:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Server URL: `https://reach.locus-intelligence.com/api/mcp` (remote, Streamable HTTP, OAuth sign-in","category":"network","line_end":15,"severity":"low","line_start":15},{"id":"network:SKILL.md:16:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Setup for Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code and others: [Reach setup guide](htt","category":"network","line_end":16,"severity":"low","line_start":16},{"id":"network:SKILL.md:45:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"To check one keyword's rank before spending a slot, use the free [local rank checker](https://reach.","category":"network","line_end":45,"severity":"low","line_start":45}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"Backticks format the Reach MCP URL as inline Markdown, not executable Ruby or shell code. The surrounding text describes OAuth setup.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Backticks identify an MCP tool and connection status values in prose. The step checks account access without invoking a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"Inline Markdown names the performance tool, date parameter, date format, and limitations field. No executable shell or Ruby expression appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"Backticks document an MCP visibility query and its summary section parameter. This is a read-only workflow instruction, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"Backticks document tracking tool parameters rather than executable commands. The preceding step requires separate approval for each exact action and keyword list.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The inline tool name and summary parameter describe reading back tracking changes. Markdown formatting does not execute a shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"The backticked tool name appears in a rule prohibiting unapproved tracking changes. There is no Ruby or shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"Backticks identify rate limit response fields in a safety rule. The instruction limits concurrency and prohibits immediate retries, not executes commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The backticked requiredPlan field identifies a returned plan restriction. The instruction requires stopping after refusal and contains no executable command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"Backticks format response fields in a relay-and-stop instruction. The step does not execute commands or authorize sending credentials to returned links.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The backticked request_feature name identifies an MCP tool, not a shell command. Submission requires owner confirmation and excludes private customer details.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:26:python-http-libraries","reason":"This line is privacy guidance, with no Python imports or HTTP library calls. It explicitly prohibits credential disclosure and unrelated customer data sharing.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:15:hardcoded-url","reason":"The HTTPS address is the declared Reach MCP endpoint required for this task. Browser OAuth and credential protections are documented; no unauthorized destination appears.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:16:hardcoded-url","reason":"The HTTPS link points to Reach setup documentation on the same service domain. It contains no payload or instruction to transmit private data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:45:hardcoded-url","reason":"The HTTPS link offers an optional local rank checker on the Reach domain. No credential transfer or unrelated data submission is requested.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[],"subject_marketplace_commit_sha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","subject_content_hash":"bf941decb96664fce12ac142cc3279acac280762c5269d4c774b1aee7012aed0","subject_tree_hash":"13b49f3f630b25cb979503b186c200341a85ef37390d17fae81eb9f713990d5c","subject_plugin_path":"skills/locusintelligence-dauagency/keyword-picker","audit_payload_hash":"38c85c369df2ef2f770f4bc0b58b1d66","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","contentHash":"bf941decb96664fce12ac142cc3279acac280762c5269d4c774b1aee7012aed0","treeHash":"13b49f3f630b25cb979503b186c200341a85ef37390d17fae81eb9f713990d5c","pluginPath":"skills/locusintelligence-dauagency/keyword-picker","auditPayloadHash":"38c85c369df2ef2f770f4bc0b58b1d66"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/locusintelligence-dauagency-keyword-picker/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}