{"data":{"skill":{"slug":"locusintelligence-dauagency-reply-to-google-reviews","name":"reply-to-google-reviews","icon":"📦","repo":"https://github.com/locusintelligence-dauagency/reach-skills/tree/2b10a6be9b9b9a990ae0beb360a21476fad41918/skills/reply-to-google-reviews","status":"approved","author":"locusintelligence-dauagency","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"c087de89-a1ba-4740-b2f6-7d001553e25a","skill_id":"5d245a5a-ecce-4637-bb88-ac42fdbab16a","version":1,"content_hash":"v3:5e1f762ecf28b75c366ed9b67053b444b2eb9ffd:9216ad03a558b9169a84e86c5e8e53cdaa6fbcd7969c2007700c7e7bd2ee6979:09a99e17a24466d975619ebb13fdc24d44378b756ce3773ffa6645777671fb97:736b696c6c732f6c6f637573696e74656c6c6967656e63652d6461756167656e63792f7265706c792d746f2d676f6f676c652d72657669657773:3ec6958abfc104766436d8fb60dd06f6","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 14 static findings are false positives: Markdown formatting, privacy instructions, and documented service links do not establish dangerous execution or unauthorized networking. The workflow requires individual approval before public replies and explicitly rejects instructions embedded in tool results. No evidence found of malicious intent; the hosted Reach implementation is outside this repository and was not audited.","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":33,"line_start":33},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":53,"line_start":53},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":55,"line_start":55},{"file":"SKILL.md","line_end":56,"line_start":56},{"file":"SKILL.md","line_end":57,"line_start":57}]},{"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}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":81,"audit_model":"codex","audited_at":"2026-10-10T23:03:13.319+00:00","created_at":"2026-10-11T03:54:24.709229+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 the account has more than one location, ask which o","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. **Find unanswered reviews.** Call `get_listing` with `sections: [\"reviews\"]` and `reviewFilter: {","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Offer a draft.** For each review, the owner can write their own reply (free) or ask for drafts.","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"7. **Post.** Call `reply_to_review` with the `reviewId` and the approved `text`. Pass an `idempotenc","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"8. **Read back.** Call `get_listing` again and confirm the review now shows as replied.","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Stop if the location's `connectionStatus` is not `active`.","category":"external_commands","line_end":53,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Read `limitations` before saying there is no data.","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- On `rate_limited`, tell the owner `retryAfterSeconds` and do not retry right away. Changes to Goog","category":"external_commands","line_end":55,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:56: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":56,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:57: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":57,"severity":"medium","line_start":57},{"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}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"The backticks format the documented HTTPS MCP endpoint in Markdown; this line contains no Ruby or shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Backticks mark MCP tool and status names, not executable shell syntax; location selection and an active connection are required.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The inline tool name and review filters are Markdown examples for retrieving account reviews, not shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"Backticks identify the drafting tool and review identifier; the text explicitly states drafting posts nothing and requires usage disclosure.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"Markdown identifies an MCP publishing tool, not shell execution; the preceding step requires approval of exact text, and this step requires idempotency.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The backticks format the MCP readback tool name; this is publication verification, with no Ruby or shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"The inline field and status values are Markdown formatting for a connection safety check, not command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"Backticks format a returned limitations field; the instruction prevents unsupported absence claims and executes no shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"Backticks identify rate-limit response fields; the instruction prohibits immediate retries rather than executing commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"The inline plan field is Markdown documentation; the workflow stops after an upgrade refusal and contains no shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Backticks identify response fields; the instruction relays connection information and stops, without executing code or automatically following the URL.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:26:python-http-libraries","reason":"This line contains privacy safeguards, not Python imports or HTTP calls; it expressly prohibits reading secrets or disclosing credentials.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:15:hardcoded-url","reason":"The HTTPS endpoint is the disclosed service required for the requested workflow; setup uses owner OAuth, with no evidence of unauthorized exfiltration.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:16:hardcoded-url","reason":"The URL is a setup documentation link on the same disclosed service domain; this line sends no data and executes no request.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","subject_content_hash":"9216ad03a558b9169a84e86c5e8e53cdaa6fbcd7969c2007700c7e7bd2ee6979","subject_tree_hash":"09a99e17a24466d975619ebb13fdc24d44378b756ce3773ffa6645777671fb97","subject_plugin_path":"skills/locusintelligence-dauagency/reply-to-google-reviews","audit_payload_hash":"3ec6958abfc104766436d8fb60dd06f6","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","contentHash":"9216ad03a558b9169a84e86c5e8e53cdaa6fbcd7969c2007700c7e7bd2ee6979","treeHash":"09a99e17a24466d975619ebb13fdc24d44378b756ce3773ffa6645777671fb97","pluginPath":"skills/locusintelligence-dauagency/reply-to-google-reviews","auditPayloadHash":"3ec6958abfc104766436d8fb60dd06f6"},"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-reply-to-google-reviews/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}}