mantis-summarize
google/mantis
Pre-process repositories with security-focused directory summaries to reduce token overhead in code review planning.
What is mantis-summarize?
Mantis-summarize generates security-focused summaries (mantis-summary.md) for each directory in a codebase, enabling efficient planning and research before threat modeling. Use it at the start of a review campaign to map the codebase; do not use it for executing code reviews, writing tests, or patching code.
- Traverses repository directory tree bottom-up to summarize source code directories
- Generates security-focused summaries that abstract architecture and highlight risk areas
- Reads historical vulnerabilities from workspace/historical_learnings.jsonl to enrich context
- Ignores non-source directories (node_modules, vendor, .git, build outputs, tests)
- Supports snapshot modes (PINNED, HALT, MODE-OFF) for different repository states
- Provides deterministic, idempotent summary generation with rollup from child directories
How to install mantis-summarize
npx skills add https://github.com/google/mantis --skill mantis-summarize- Source files and directory structure must be present
- Optional: workspace/historical_learnings.jsonl for enriching summaries with past vulnerabilities
- Optional: workspace/.mantis_state.json for snapshot mode configuration
How to use mantis-summarize
- 1.Run /mantis-summarize to initiate the pre-processing phase
- 2.The command traverses the repository bottom-up, generating mantis-summary.md in each source directory
- 3.Review generated summaries to understand directory-level architecture and security concerns
- 4.Pass summary context to downstream /mantis-plan or /mantis-researcher commands for efficient analysis
- 5.Summaries are automatically overwritten on subsequent runs to reflect current codebase state
Use cases
- Map a large codebase before starting a security review campaign to reduce token overhead
- Quickly reference architecture and security concerns across directory levels
- Enrich summaries with historical vulnerability data for context-aware planning
- Prepare a repository for downstream planning and research stages in a review workflow
- Generate per-directory security summaries for efficient threat modeling
- Security researchers planning code review campaigns
- Threat modelers needing codebase architecture overview
- Code review orchestrators preparing repositories for analysis
- Teams conducting security audits on large codebases
mantis-summarize FAQ
Use it at the start of a review campaign to map the codebase before threat modeling and planning. Do not use it for executing code reviews, writing test scripts, or patching code.
The tool ignores node_modules, vendor, .git, build outputs, and tests/ directories to focus on source code.
For very large directories, the tool generates per-file summaries or operates in efficient chunks to avoid exceeding token limits.
Yes, if workspace/historical_learnings.jsonl exists, the tool reads past vulnerabilities and security fixes to enrich summaries with context.
In PINNED mode, summaries are skipped (CODE_ROOT is read-only). In HALT or MODE-OFF modes, mantis-summary.md files are written to each source directory.
Full instructions (SKILL.md)
Source of truth, from google/mantis.
name: mantis-summarize description: >- Pre-processes the repository by generating security-focused summaries (mantis-summary.md) for each directory to make planning and research more efficient. Use when starting a review campaign to map the codebase before threat modeling and planning. Don't use for executing code reviews, writing test scripts, or patching code.
Summarizer (/mantis-summarize)
System Goal
Repository Mapper. Automates the generation of security-focused, deterministic summaries of directory contents to reduce token overhead for downstream planning and research stages.
Command Definition
- Command:
/mantis-summarize - Description: Pre-processes the repository by generating security-focused
summaries (
mantis-summary.md) for each directory to make planning and research more efficient. - Arguments (optional; supplied by the orchestrator, consumed by Block A):
--snapshot_root/--snapshot_id/--state_root. In PINNED mode, source is read under CODE_ROOT but summaries are skipped (see Output location). All absent → MODE-OFF (in-tree summaries, as today).
Input/Output Contract
- Reads:
workspace/.mantis_state.json(to track current loop pass).- Codebase directories and source files (excluding
node_modules,vendor,.git, build outputs, andtests/). - Child directory summaries (
mantis-summary.mdfiles from subdirectories). workspace/historical_learnings.jsonl(optional, to enrich summaries).
- Writes:
- Traversal script to workspace.
- MODE-OFF:
mantis-summary.mdin each source directory (as today). PINNED: skipped (see Output location).
- Preconditions:
- Source files and directory structure must be present.
- Idempotency Guarantee:
- Deterministically overwrites existing
mantis-summary.mdfiles in-place with updated rollups.
- Deterministically overwrites existing
Instructions
Step 0: Locator Resolution + output location (run first)
LOCATOR RESOLUTION (before reading ANY target code or artifact):
0. ROLE: If this skill NEVER reads target source (report, calibrate, reflect),
you are a FINDINGS-ONLY stage: skip steps 2-6; still read active_snapshot from
state for provenance/annotation; NEVER stop merely because a code root is unset.
1. Determine CODE_ROOT, in this priority order:
a. If --target_root is passed on THIS invocation, CODE_ROOT = --target_root.
It is AUTHORITATIVE and OVERRIDES SNAPSHOT_ROOT and the state fallback
(used when a caller hands you a prepared tree, e.g. a patched shadow).
b. Else if --snapshot_root (or SNAPSHOT_ROOT) is passed, use it.
c. Else read state_root/workspace/.mantis_state.json (state_root from
--state_root if passed, else ./workspace/... relative to the current dir)
-> active_snapshot.root / .snapshot_id / .snapshot_pinned.
d. Else (no arg AND no readable active_snapshot): CODE_ROOT = current directory,
treat snapshot_pinned = false (MODE-OFF). Do NOT stop.
2. SENTINEL CHECK (only if snapshot_pinned is true AND you did NOT take path 1a):
verify CODE_ROOT/.mantis_snapshot_id exists and equals SNAPSHOT_ID. If missing
or different -> STOP "snapshot sentinel mismatch". (A --target_root tree (1a) is
deliberately mutated and is sentinel-EXEMPT.)
3. PATH FIELDS:
- SNAPSHOT-RELATIVE (read under CODE_ROOT): code_paths entries; plan target_files
that are file paths. Strip ONLY a trailing ":<digits>". A code_paths entry
containing "://" is a URL/endpoint, NOT a file read. A code_paths entry that is
NOT of the form <existing-path>:<integer> is a non-source LOCATOR
(symbol/offset/endpoint): only check that the artifact/symbol exists; skip ALL
line-range and line-existence logic.
- STATE-RELATIVE (read/write under state_root/workspace, NEVER prefix CODE_ROOT):
kb_references, repro_file_path, reattack_file_path, helper scripts, report
files, and all state/findings JSON.
4. Never WRITE under CODE_ROOT when snapshot_pinned is true. Any command that
compiles, generates, or writes artifacts MUST run in a PRIVATE SHADOW copy
(mktemp -d from CODE_ROOT), never with cwd=CODE_ROOT. Read-only inspection may
cd into CODE_ROOT.
5. VCS-METADATA CARVE-OUT: history-log extraction and any VCS diff/blame command
run in the LIVE repository root (which still has .git/.hg/.repo), NOT CODE_ROOT
(the snapshot copy strips VCS metadata). Do NOT stop merely because CODE_ROOT
lacks .git/.hg/.repo.
6. Every shell command uses ABSOLUTE paths and sets its own working directory on
that call. Do NOT assume the working directory persists between calls.
Output location (MANDATORY):
- PINNED mode (snapshot_pinned true): summaries are skipped this pass. In
PINNED mode, CODE_ROOT is read-only (Block A step 4), and consumers (plan,
history, researcher) read
mantis-summary.mdfrom the source directory in the code tree — not from a state-relative mirror. Writing to a mirror that no consumer reads would silently waste the work. Do NOT write anymantis-summary.mdfiles in PINNED mode. (If a future change wires consumers to the mirror + re-maps via a provenance marker, this can be revisited; for now, PINNED-mode summaries are inert.) - HALT mode (active_snapshot present + snapshot_pinned=false): behave as
MODE-OFF (write
mantis-summary.mdinto each source directory). The snapshot is not read-only (no immutable copy was pinned), so writing into the tree is safe. - MODE-OFF (no
active_snapshot— today's default): behave exactly as today — writemantis-summary.mdinto each source directory. - In all modes except PINNED,
mantis-summary.mdfiles must remain invisible to every VCS dirty check and be deleted from the target tree before any sync (the meta-agent enforces this in Block C STEP 0). Never let a summary make the tree look dirty.
Your task is to write and execute a script that will traverse the repository
directory tree and create a mantis-summary.md file in each directory
containing source code.
This is an optional pre-processing phase designed to drastically reduce the
context window size required for the strategist (/mantis-plan), and provide a
quick reference map for researchers (/mantis-researcher).
Execute the summarize stage as follows:
-
Write the Traversal Script (Bottom-Up Hierarchical): Write a script (e.g., Python or bash) in your workspace that walks the repository directory tree using a bottom-up (post-order) traversal.
- The script must ignore non-source-code directories such as
node_modules,vendor,.git, build outputs, andtests/. - By traversing bottom-up, the script ensures that subdirectories are summarized before their parent directories.
- When analyzing a directory, the script should pass the LLM the local source
files in that directory PLUS the
mantis-summary.mdfiles of its immediate subdirectories. Do not pass the raw source files of subdirectories to the parent. - When analyzing very large directories, context window size might become a problem. Instead of passing files and directory summaries in bulk, generate per-file summaries or operate in more efficient chunks to avoid passing too many tokens for the LLM to handle.
- The script must ignore non-source-code directories such as
-
Generate the Security Summary (Map-Reduce): The script should read
workspace/historical_learnings.jsonl(if it exists) to check for past vulnerabilities and security fixes associated with files in the current directory, and pass them in context. The script should instruct the LLM or agent tool to generate a concise, security-focused summary of the directory. To keep token lengths reasonable at higher levels of the directory tree, the LLM should abstract away lower-level details, focusing on the rolled-up architecture. The prompt used by your script should ask for:- Core Components: What are the primary files and subdirectories, and what do they do?
- API Endpoints & Exports: What functions or classes are exposed to other modules?
- Trust Boundaries & External Inputs: Does this directory handle untrusted data, network requests, or user input?
- Sensitive Operations: Are there parsers, cryptographic functions, or memory management operations?
- Historical Vulnerabilities & Fixes: What files or components in this
directory have historical vulnerabilities or security-related fixes
recorded in
workspace/historical_learnings.jsonl? Summarize the past fixes, components affected, and vulnerability classes to highlight past regressions or recurring weaknesses.
The summary must be a reasonable size to incorporate into work on larger problems, so aim for several thousand words or fewer.
-
Output to
mantis-summary.md: In MODE-OFF (or HALT), writemantis-summary.mdinto the corresponding source directory (overwrite if present). In PINNED mode, do NOT write — summaries are skipped this pass (see Output location above). Never write into the read-only snapshot. -
Execute the Script: Run the script you just wrote to generate all the summaries across the repository. Wait for it to finish successfully.
-
Complete: Summaries are now generated. Notify the user.
When complete, notify the user.
Related skills
More from google/mantis and the wider catalog.

mantis-threat-model
Synthesize threat models from architecture and entity definitions in your Knowledge Base.

mantis-architecture
Synthesizes codebase analysis and learnings into an interlinked Markdown Knowledge Base for architecture documentation.

mantis-review
Independently validates security findings against source code to filter false positives.

agent-platform-alert-configuration
Configure best-practice alerting for AI agents using OpenTelemetry metrics, output as Terraform.

agent-platform-deploy
Deploy open models and custom weights to Agent Platform endpoints with safety confirmations.

agent-platform-endpoint-management
Create, list, describe, update, and delete Agent Platform serving endpoints for model deployment.