Consolidates raw security findings to eliminate redundant reports. Use when raw findings have been generated by the researcher and need consolidation before review. Don't use for initial code auditing or patch generation.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionmantis-dedupeExecute the skills CLI command in your project's root directory to begin installation:
Fetches mantis-dedupe from google/mantis and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate mantis-dedupe. Access via /mantis-dedupe in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
307
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
307
stars
| name | mantis-dedupe |
| description | >- Consolidates raw security findings to eliminate redundant reports. Use when raw findings have been generated by the researcher and need consolidation before review. Don't use for initial code auditing or patch generation. |
Duplicate Finding Merger. Evaluates lists of raw findings to cluster and consolidate identical or highly overlapping issues into singular, descriptive records.
/mantis-dedupeworkspace/findings/ (raw finding JSON files, ignoring .trash/).workspace/archive/findings_pass_*/*.json and
workspace/archive/loop*_findings/*.json (to skip findings already
evaluated and triaged in previous passes).workspace/.mantis_state.json (to track current loop pass).workspace/findings/.trash/ after setting
"status": "DUPLICATE" and "duplicate_of".workspace/.tx_log.jsonl.workspace/helpers/merge_findings.py.workspace/findings/<primary_id>.json (merges
fields and history).workspace/findings/ must exist and contain finding files.workspace/archive/ to
filter out any findings already processed in previous passes of this run
(regardless of status or viability). Logs transactions to
workspace/.tx_log.jsonl to support tracking and potential rollbacks.
Deterministic merging rules implemented in merge_findings.py.Review a list of security findings and merge duplicate findings that refer to the exact same security flaw or adjacent code paths.
Execute your task as follows:
Load Raw Findings & Archived Findings Queue:
workspace/findings/. If the directory is empty or does not exist,
notify the user and exit..trash/
subdirectory) when listing or processing findings.workspace/archive/findings_pass_*/*.json
and workspace/archive/loop*_findings/*.json. These files represent
vulnerabilities that have already been fully evaluated, triaged, and
potentially patched in previous passes.workspace/historical_learnings.jsonl (VCS history), as we want to
catch regressions if old bugs were reintroduced.Filter Loop Duplicates (Previously Processed Findings): Cross-reference
the current findings against the loaded archived findings (using
code_paths and title similarities). If a current finding matches any
archived finding from a previous pass (regardless of its status or
viability), you must soft-delete the new finding file by ensuring the
trash directory exists (e.g., mkdir -p workspace/findings/.trash/).
Exception: If the current finding has the exact same UUID as the
matching archived finding, do not filter it out; this indicates the finding
was intentionally copied back to workspace/findings/ for a retry (e.g.,
re-reproduction or re-patching). Before moving a duplicate file (different
UUID), update the duplicate finding file to set "status": "DUPLICATE" and
"duplicate_of": "<archived_uuid>" (where archived_uuid is the UUID of the
matching finding from the archive). Then, move it to the trash staging
directory (workspace/findings/.trash/), log the transaction in
workspace/.tx_log.jsonl (action: "loop_filter"), and drop it from your
active list. This prevents the pipeline from getting stuck re-evaluating the
same issues.
Filter Duplicate Findings in Current Batch: Check the current findings
against each other to find duplicates (using code_paths and title
similarities). If multiple findings refer to the exact same flaw or highly
overlapping code paths, they must be merged.
Map/Reduce Chunking Strategy (For Scale): If there are many finding files (e.g., > 20 items), use a Map/Reduce approach to group them by target file or component before checking for overlaps to avoid context window limits.
Token-Optimized Consolidation and Merging: To minimize LLM output tokens and prevent data loss, do not manually rewrite or output the merged JSON files in your response. Instead, follow this pattern:
workspace/helpers/merge_findings.py) during your first merge
action. For all subsequent merges, do not regenerate the script; simply
execute the existing helper script with the new finding IDs. The script
must follow these deterministic rules:
"id" of the primary finding being
kept.NONE > LOW > HIGH).EXTERNAL > INTERNAL_NETWORK >
IN_CLUSTER > LOCAL > HOST_SYSTEM > SUPPLY_CHAIN >
PHYSICAL_TEMPORARY > PHYSICAL_LONG_TERM).NONE > REQUIRED)."history" entries from
the merged findings. Append a new entry to the "history" array for
this merge action conforming to the schema (containing "stage": "dedupe", "action": "merge", "details": "Merged duplicate findings: [comma-separated-ids]", "pass_number": <current_pass_number>, and "timestamp": "<current_iso8601_timestamp>").workspace/findings/<primary_id>.json) on disk.Transactional Staged Clean Up: Do not permanently delete redundant
files. Ensure the trash directory exists (e.g., mkdir -p workspace/findings/.trash/). Before moving, the script must update the
duplicate finding files, setting "status": "DUPLICATE" and
"duplicate_of": "<primary_uuid>". Move the merged duplicate .json files
to the trash staging directory (workspace/findings/.trash/). For every
file moved, append a transaction record to workspace/.tx_log.jsonl.
workspace/.tx_log.jsonl)Each line must be a self-contained JSON object documenting the transaction:
{"timestamp": "2026-07-14T15:13:00Z", "action": "loop_filter | dedupe_merge", "primary_uuid": "[UUID] (or null for loop_filter)", "moved_uuid": "[UUID]"}
This cleans up the directory for downstream stages while preserving rollback capability.
When complete, notify the user.
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
I recommend mantis-dedupe for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
mantis-dedupe has been reliable in day-to-day use. Documentation quality is above average for community skills.
mantis-dedupe reduced setup friction for our internal harness; good balance of opinion and flexibility.
Useful defaults in mantis-dedupe — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
I recommend mantis-dedupe for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
mantis-dedupe has been reliable in day-to-day use. Documentation quality is above average for community skills.
mantis-dedupe has been reliable in day-to-day use. Documentation quality is above average for community skills.
mantis-dedupe fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Useful defaults in mantis-dedupe — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
mantis-dedupe is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
showing 1-10 of 30