{"data":{"skill":{"slug":"andresnaza-clickup-integration-expert","name":"ClickUp Integration Expert","icon":"📦","repo":"https://github.com/AndresNaza/claude-plugins/tree/main/clickup-sync/skills/clickup-integration","status":"approved","author":"AndresNaza","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"d13f7897-16f5-4fc7-8b4f-f6a7ed2bb3d5","skill_id":"0a630540-f92c-4a6a-9f48-0ac8ff1500ff","version":10,"content_hash":"746e602e66ac48a709244b4670bc60d2","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 false positives caused by markdown code fences, inline slash commands, and configuration examples. The skill does include an intended setup command for a remote ClickUp MCP endpoint, so users should understand that it connects Claude to ClickUp through OAuth.","remediation":[{"issue":"Remote MCP setup connects Claude to ClickUp over the network.","severity":"low","suggestion":"State clearly that users should review the ClickUp MCP permissions during OAuth and only authenticate trusted workspaces."},{"issue":"The setup command is shown without verification guidance.","severity":"low","suggestion":"Add a short note advising users to confirm the MCP endpoint and ClickUp account before running the command."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":35,"line_start":24},{"file":"SKILL.md","line_end":41,"line_start":35},{"file":"SKILL.md","line_end":42,"line_start":41},{"file":"SKILL.md","line_end":43,"line_start":42},{"file":"SKILL.md","line_end":44,"line_start":43},{"file":"SKILL.md","line_end":45,"line_start":44},{"file":"SKILL.md","line_end":46,"line_start":45},{"file":"SKILL.md","line_end":47,"line_start":46},{"file":"SKILL.md","line_end":52,"line_start":47},{"file":"SKILL.md","line_end":54,"line_start":52},{"file":"SKILL.md","line_end":56,"line_start":54},{"file":"SKILL.md","line_end":61,"line_start":56}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":53,"line_start":53}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":53,"line_start":53}],"confidence":0.84,"description":"claude mcp add --transport http clickup https://mcp.clickup.com/mcp","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"Line 53 configures Claude to connect to a remote ClickUp MCP endpoint and later authenticate by OAuth. This network access is intended, but it is a real external-service integration that can expose workspace data based on granted permissions."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":69,"audit_model":"claude","audited_at":"2026-07-09T05:57:45.344+00:00","created_at":"2026-07-09T06:43:50.435865+00:00","static_findings":[{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Stored in `.roadmap/clickup-config.json`:","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```json","category":"external_commands","line_end":35,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":41,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:setup` | Configure ClickUp connection |","category":"external_commands","line_end":42,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:push` | Push to ClickUp |","category":"external_commands","line_end":43,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:pull` | Pull from ClickUp |","category":"external_commands","line_end":44,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:sync` | Full bidirectional sync |","category":"external_commands","line_end":45,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:status` | View sync status |","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":"| `/clickup-sync:link` | Manually link items |","category":"external_commands","line_end":47,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `/clickup-sync:unlink` | Remove sync links |","category":"external_commands","line_end":52,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":54,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":56,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Then run `/mcp` to authenticate via OAuth.","category":"external_commands","line_end":61,"severity":"medium","line_start":56},{"id":"network:SKILL.md:53:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"claude mcp add --transport http clickup https://mcp.clickup.com/mcp","category":"network","line_end":53,"severity":"low","line_start":53}],"finding_verdicts":[{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"Line 22 names a local configuration file in prose. It does not execute a shell command or instruct command execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"Lines 24-35 are a fenced JSON example for configuration. The backticks are markdown formatting, not Ruby or shell execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The finding spans a closing code fence and surrounding markdown. There is no executable command or dynamic input handling in this section.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The backticks wrap a documented slash command name in a markdown table. This is not shell execution and has no command injection path.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The line documents a skill command for pushing to ClickUp. Inline markdown backticks do not create external command execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The line documents a skill command for pulling from ClickUp. It is not Ruby backtick execution or a shell invocation.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The line documents a bidirectional sync slash command inside a markdown table. No executable code or interpolation appears here.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The line documents a status slash command in inline code formatting. It does not invoke a process or accept user-controlled shell input.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The line documents a manual link slash command. The backticks are presentation markup, not execution syntax in an active script.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The finding covers markdown table text and a section transition. It contains command names as documentation, not executable shell code.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The span includes a bash code fence and a setup command, but the flagged backticks themselves are markdown delimiters. The actual security consideration is the hardcoded network endpoint, captured separately.","verdict":"false_positive","confidence":0.78},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The finding is the closing markdown fence after the setup command. It is not an executable pattern or command injection vector.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"Line 56 instructs the user to run Claude's MCP UI command after setup. The inline backticks are markdown formatting around a slash command, not shell execution.","verdict":"false_positive","confidence":0.94},{"id":"network:SKILL.md:53:hardcoded-url","reason":"Line 53 configures Claude to connect to a remote ClickUp MCP endpoint and later authenticate by OAuth. This network access is intended, but it is a real external-service integration that can expose workspace data based on granted permissions.","verdict":"confirmed","severity":"low","confidence":0.84}],"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}}