producthunt
Audited by Runlayer on Feb 21, 2026
Malicious tool definition detected
Tool: .claude-plugin/plugin.json Description: { "name": "producthunt", "version": "1.0.0", "description": "Search and retrieve content from Product Hunt.
Malicious tool definition detected
Tool: SKILL.md Description: --- name: producthunt description: Search and retrieve content from Product Hunt.
Malicious tool definition detected
Tool: scripts/credential.py Description: #!/usr/bin/env python3 """ ProductHunt API credential management.
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
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
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():
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
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
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 } }
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
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 } }
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
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":