producthunt

Warn

Audited by Runlayer on Feb 21, 2026

Risk Level: MEDIUM
Scan Summary
Max Score
78%
Files
13
Flagged
13
Chunks
13
Flagged Files (13)
.claude-plugin/plugin.jsonHIGH
78.3%

Malicious tool definition detected

Tool: .claude-plugin/plugin.json Description: { "name": "producthunt", "version": "1.0.0", "description": "Search and retrieve content from Product Hunt.

SKILL.mdHIGH
78.3%

Malicious tool definition detected

Tool: SKILL.md Description: --- name: producthunt description: Search and retrieve content from Product Hunt.

scripts/credential.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/credential.py Description: #!/usr/bin/env python3 """ ProductHunt API credential management.

scripts/get_collection.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_collection.py Description: #!/usr/bin/env python3 """ Get collection by ID or slug Usage: python3 scripts/get_collection.py COLLECTION_SLUG """ import argparse import json from producthunt_api import graphql, clean_collection, format_count QUERY = """ query GetCollection($id: ID, $slug: String) { collection(id: $id, slug: $slug) { id name tagline description url followersCount featuredAt createdAt user { name username } posts(first: 10) { totalCount edges { node { id name tagli

scripts/get_collections.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_collections.py Description: #!/usr/bin/env python3 """ Get collections with filters Usage: python3 scripts/get_collections.py --featured --limit 20 """ import argparse from producthunt_api import graphql, clean_collection, format_count, print_pagination QUERY = """ query GetCollections($first: Int, $after: String, $featured: Boolean, $userId: ID) { collections(first: $first, after: $after, featured: $featured, userId: $userId, order: FOLLOWERS_COUNT) { totalCount pageInfo { has

scripts/get_post.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_post.py Description: #!/usr/bin/env python3 """ Get post by ID or slug Usage: python3 scripts/get_post.py POST_ID_OR_SLUG """ import argparse import json from producthunt_api import graphql, clean_post, print_post QUERY = """ query GetPost($id: ID, $slug: String) { post(id: $id, slug: $slug) { id name tagline slug description votesCount commentsCount url website featuredAt createdAt makers { name username } topics(first: 5) { edges { node { name slug } } } } } """ def main():

scripts/get_post_comments.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_post_comments.py Description: #!/usr/bin/env python3 """ Get comments on a post Usage: python3 scripts/get_post_comments.py POST_ID --limit 20 """ import argparse from producthunt_api import graphql, print_comments_list, print_pagination QUERY = """ query GetPostComments($id: ID, $slug: String, $first: Int, $after: String) { post(id: $id, slug: $slug) { id name commentsCount comments(first: $first, after: $after) { totalCount pageInfo { hasNextPage endCursor } edges { node { id

scripts/get_posts.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_posts.py Description: #!/usr/bin/env python3 """ Get posts with filters Usage: python3 scripts/get_posts.py --featured --limit 20 python3 scripts/get_posts.py --topic ai --limit 10 """ import argparse from datetime import datetime, timezone from producthunt_api import graphql, print_posts_list, print_pagination QUERY = """ query GetPosts($first: Int, $after: String, $featured: Boolean, $topic: String, $postedAfter: DateTime, $postedBefore: DateTime) { posts(first: $first, after

scripts/get_topic.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_topic.py Description: #!/usr/bin/env python3 """ Get topic by ID or slug Usage: python3 scripts/get_topic.py artificial-intelligence """ import argparse import json from producthunt_api import graphql, clean_topic, print_topic QUERY = """ query GetTopic($id: ID, $slug: String) { topic(id: $id, slug: $slug) { id name slug description postsCount followersCount url } }

scripts/get_topics.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_topics.py Description: #!/usr/bin/env python3 """ Get topics with optional search Usage: python3 scripts/get_topics.py --query "AI" --limit 20 """ import argparse from producthunt_api import graphql, print_topics_list, print_pagination QUERY = """ query GetTopics($first: Int, $after: String, $query: String) { topics(first: $first, after: $after, query: $query, order: FOLLOWERS_COUNT) { totalCount pageInfo { hasNextPage endCursor } edges { node { id name slug description postsCo

scripts/get_user.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_user.py Description: #!/usr/bin/env python3 """ Get user by username or ID Usage: python3 scripts/get_user.py rrhoover """ import argparse import json from producthunt_api import graphql, clean_user, print_user QUERY = """ query GetUser($id: ID, $username: String) { user(id: $id, username: $username) { id name username headline url twitterUsername websiteUrl isMaker createdAt profileImage } }

scripts/get_user_posts.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/get_user_posts.py Description: #!/usr/bin/env python3 """ Get user's posts (submitted or made) Usage: python3 scripts/get_user_posts.py rrhoover --limit 20 """ import argparse from producthunt_api import graphql, print_posts_list, print_pagination QUERY = """ query GetUserPosts($id: ID, $username: String, $first: Int, $after: String) { user(id: $id, username: $username) { id name username submittedPosts(first: $first, after: $after) { totalCount pageInfo { hasNextPage endCursor } e

scripts/producthunt_api.pyHIGH
78.3%

Malicious tool definition detected

Tool: scripts/producthunt_api.py Description: #!/usr/bin/env python3 """ ProductHunt GraphQL API wrapper """ import urllib.request import json import sys from credential import get_access_token API_URL = "https://api.producthunt.com/v2/api/graphql" def graphql(query: str, variables: dict = None) -> dict: """Execute GraphQL query""" token = get_access_token() if not token: print("error: PRODUCTHUNT_ACCESS_TOKEN not set", file=sys.stderr) sys.exit(1) body = json.dumps({"query": query, "variables":

Audit Metadata
Max File Score
78%
Classification
UNKNOWN_SERVER
Files Scanned
13
Files Flagged
13
Chunks Analyzed
13
Analyzed
Feb 21, 2026, 02:44 PM
Security Audit — runlayer — producthunt