{"data":{"skill":{"slug":"locusintelligence-dauagency-categories-and-service-area","name":"categories-and-service-area","icon":"📦","repo":"https://github.com/locusintelligence-dauagency/reach-skills/tree/2b10a6be9b9b9a990ae0beb360a21476fad41918/skills/categories-and-service-area","status":"approved","author":"locusintelligence-dauagency","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"7e1d215b-2748-4662-acfa-91da101470f8","skill_id":"12bef201-ed01-4052-b3c2-720bd6e11b13","version":1,"content_hash":"v3:5e1f762ecf28b75c366ed9b67053b444b2eb9ffd:a24537737b07cf53eabd54077d91385c95ce2548f91d8f9c533bf8d0836bd872:39c3137d01957f931d9093818f44a39f86e0ce94ca3e4f5b97c04c775ae8d51d:736b696c6c732f6c6f637573696e74656c6c6967656e63652d6461756167656e63792f63617465676f726965732d616e642d736572766963652d61726561:2919398ac2949750ad5b7451baa9fec8","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 guidance, or documented Reach links rather than shell execution or unsafe network behavior. The workflow requires explicit approval, preview validation, concurrency protection, and readback; no evidence of prompt injection or credential exfiltration was found. The hosted Reach server implementation is outside this review.","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":34,"line_start":34},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":52,"line_start":52}]},{"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":32,"line_start":32}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":75,"audit_model":"codex","audited_at":"2026-10-10T22:37:28.618+00:00","created_at":"2026-10-11T03:52:42.507539+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 `connectionStatus` is not `active`, tell the owner ","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. **Read now.** Call `get_listing` with `sections: [\"profile\"]`. Show the primary category, additio","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. **Preview.** Call `update_listing` with `preview: true` and either `changes.profile.additionalCat","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":"6. **Check the preview.** If it lists `invalidFields`, relay each `fix` and stop. If it shows `stage","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"8. **Write.** Call `update_listing` with `preview: false`, the same `changes`, the `basedOn` from th","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"9. **Read back.** Report `published.applied`, `skipped` and `failed` as returned. Call `get_listing`","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:49: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. Google writes a","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":"- On `listing_only`, relay the message and `connectUrl`, and stop.","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the owner asks for something Reach cannot do (changing the primary category or address), offer ","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"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:32:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"3. **Primary category.** It cannot be changed through Reach. Tell the owner to change it in Google d","category":"network","line_end":32,"severity":"low","line_start":32}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"The backticks format the documented MCP endpoint as inline Markdown. No Ruby code, shell command, or command substitution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Backticks mark MCP tool names and connection-status values, not shell execution. The step checks account connectivity and stops when inactive.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The text describes reading profile fields through get_listing. Backticks are Markdown formatting around the tool and its parameters, with no shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The step requests an MCP update preview, not command execution. Inline backticks format parameters, and the preview shows changes before owner approval.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"Backticks identify validation fields and staged-edit parameters. The step stops on invalid fields and requires separate approval for staged edits.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"Backticks format MCP update parameters, not executable shell syntax. The preceding approval step authorizes the write, with concurrency and idempotency protections.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"Backticks format response fields and the readback tool name. This step reports outcomes and verifies profile values without invoking a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"The backticks identify a rate-limit status and retry-delay field. The instruction prevents immediate retries and contains no executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"Backticks format a connection status and URL field, not shell syntax. The workflow relays connection information and stops rather than executing returned text.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The backticks format the request_feature MCP tool name. Sending a feature request requires owner confirmation and omits private customer details.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:26:python-http-libraries","reason":"This line is privacy guidance, not Python code or an HTTP library import. It prohibits credential access and disclosure to tool-returned destinations.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:15:hardcoded-url","reason":"The HTTPS URL is the disclosed Reach MCP service required for the requested profile workflow. No unauthorized transfer or secret-bearing request is instructed.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:16:hardcoded-url","reason":"The HTTPS link points to Reach setup documentation for supported clients. It does not instruct credential disclosure, downloads, or code execution.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:32:hardcoded-url","reason":"The HTTPS link offers an optional category finder on the disclosed provider domain. It contains no credentials or instructions to transmit private records.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","subject_content_hash":"a24537737b07cf53eabd54077d91385c95ce2548f91d8f9c533bf8d0836bd872","subject_tree_hash":"39c3137d01957f931d9093818f44a39f86e0ce94ca3e4f5b97c04c775ae8d51d","subject_plugin_path":"skills/locusintelligence-dauagency/categories-and-service-area","audit_payload_hash":"2919398ac2949750ad5b7451baa9fec8","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"5e1f762ecf28b75c366ed9b67053b444b2eb9ffd","contentHash":"a24537737b07cf53eabd54077d91385c95ce2548f91d8f9c533bf8d0836bd872","treeHash":"39c3137d01957f931d9093818f44a39f86e0ce94ca3e4f5b97c04c775ae8d51d","pluginPath":"skills/locusintelligence-dauagency/categories-and-service-area","auditPayloadHash":"2919398ac2949750ad5b7451baa9fec8"},"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-categories-and-service-area/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}}