{"adoption": {"forks": 133, "observed_at": "2026-08-28T04:04:08.806654+00:00", "stars": 1254}, "canonical_url": "https://ross.abutalabs.com/products/promptmap", "card": {"archived": false, "artifact_type": "cli-tool", "description": "a security scanner for custom LLM applications", "domain": ["security", "artificial-intelligence", "large-language-models", "developer-tools", "penetration-testing"], "enriched": true, "function": ["security", "penetration-testing", "vulnerability-scanning", "llm-inference", "prompt-engineering", "cli"], "health_score": 53, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["utkusen/promptmap"], "name": "utkusen/promptmap", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2025-12-01T11:50:23+00:00", "repo": "utkusen/promptmap", "stars": 1254, "tags": ["prompt-injection", "llm-security", "jailbreak-testing", "white-box-testing", "black-box-testing", "ai-red-teaming", "ollama", "yaml-rules"], "topics": ["chatgpt", "prompt-engineering", "prompt-injection", "llm", "ai-security", "claude", "ollama"], "urls": [], "use_cases": ["test my chatbot for prompt injection vulnerabilities", "scan LLM app system prompts for jailbreak weaknesses", "run automated security tests against an OpenAI or Claude-based app", "black-box pentest an external LLM HTTP endpoint", "check if my LLM leaks its system prompt", "evaluate LLM app for harmful content and bias risks", "test local models via Ollama for prompt attacks"], "what_it_is": "promptmap2 is an automated prompt injection scanner for custom LLM applications, supporting white-box testing of system prompts and black-box testing of HTTP endpoints. It uses a dual-LLM architecture where a controller LLM evaluates whether attack prompts against the target LLM succeeded, with 50+ customizable YAML-based test rules.", "when_to_avoid": ["you need general-purpose application security scanning beyond LLM prompts", "you require a GUI or SaaS platform rather than a Python CLI", "your target is not an LLM-based application", "you need continuous runtime monitoring rather than point-in-time scanning"], "when_to_choose": ["you need automated prompt injection and jailbreak testing for custom LLM apps", "you want white-box testing of system prompts or black-box testing of HTTP LLM endpoints", "you need multi-provider support including OpenAI, Claude, Gemini, Grok, and Ollama local models", "you want customizable YAML-based test rules with pass/fail conditions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/promptmap", "repo": "utkusen/promptmap", "role": "main", "score": 53}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.806654+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:07:26.324994+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f02e379496671d25006ac9da7fbd4a79d31b2222e2c6c2b0bfcfc553d7662a4b", "fetched_at": "2026-08-28T04:04:08.806654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/utkusen/promptmap"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 55, "longevity": 81, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1145, "days_push": 275, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 53, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}