Calculates the final risk score based on empirical evidence and architectural impact. Use when findings have been fully processed by previous stages and you need to append final risk scores to the finding files. Don't use for discovering new vulnerabilities or writing patches.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionmantis-calibrateExecute the skills CLI command in your project's root directory to begin installation:
Fetches mantis-calibrate 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-calibrate. Access via /mantis-calibrate 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-calibrate |
| description | >- Calculates the final risk score based on empirical evidence and architectural impact. Use when findings have been fully processed by previous stages and you need to append final risk scores to the finding files. Don't use for discovering new vulnerabilities or writing patches. |
Risk Analysis Expert. Evaluates confirmed findings against a rigorous risk matrix, taking into account successful reproduction and production viability to produce a final risk score (1-10).
/mantis-calibrateworkspace/findings/*.json (all finding files to load full pipeline
state).workspace/kb/THREAT_MODEL.md (if exists, to check threat boundary
overrides and asset criticality).workspace/.mantis_state.json (to track current loop pass).impact_score, likelihood_score, availability_tier,
inferred_exposure, attacker_position, mantis_risk_score,
priority, sanity_triage_applied, outrage_commentary,
executive_summary).workspace/helpers/append_calibrate.py.workspace/findings/.Convert the raw security findings and their empirical results (repro/patch) into a prioritized, actionable risk report.
Execute the calibration as follows:
Load Full Pipeline State:
workspace/findings/ directory. Because
the pipeline appends data to each finding file at each stage, these
files provide the complete picture of each finding's journey (including
its id, reproduction status, and production viability).production_viability is missing, treat it as
"CONDITIONAL_VIABLE".repro_status is missing, treat it as "not_attempted".workspace/kb/THREAT_MODEL.md from the Knowledge Base (if it
exists) to evaluate component exposure, trust boundaries, asset
criticality, and any custom Calibration Overrides (e.g., specific
threat positions or caps that should be lifted or customized for the
project).Calculate Risk Score (1-10): For each unique finding file, calculate the actual technical risk score in a matrix form based on the following formula components, where Hazard = Impact + Likelihood:
likelihood_score by 1 or 2 (but not
below 1.0) if the exploit path relies on uncommon or non-default
usage patterns. This applies if:
status is FALSE_POSITIVE or NEEDS_RESEARCH, or if
production_viability is NON_VIABLE: Drop this finding
completely. Do not score it or update its file with calibration
data.production_viability is VIABLE, CONDITIONAL_VIABLE, or
SAMPLE_OR_TEST:
workspace/kb/THREAT_MODEL.md does not exist or does not
mention the component:
inferred_exposure to "INTERNAL" unless there is
clear evidence of direct external exposure (EXPOSED) or
deep nested isolation (PRIVILEGED). Local SUID/LPE
binaries should default to "INTERNAL" exposure.inferred_exposure based on the Network/Trust
Exposure multiplier:
"EXPOSED""INTERNAL""PRIVILEGED"attacker_position from the finding JSON.attacker_position must represent the outermost
boundary that the first untrusted principal (the
ultimate human attacker or external threat actor) must
cross to reach the interface. Do not key on the
transport protocol (e.g., HTTP, gRPC, IPC) or the
immediate protocol peer.
localhost or uses
local IPC (unix sockets, pipes, shared memory), the
position is "LOCAL", even if it uses HTTP/TCP
under the hood."INTERNAL_NETWORK" (or "IN_CLUSTER"
if restricted to pod-to-pod), even if it is a web
service."EXTERNAL" if the interface
is directly reachable from the public internet."PHYSICAL_TEMPORARY" or "PHYSICAL_LONG_TERM",
regardless of the protocol used."authenticated <role>",
"customer with", "tenant <role>", "Fitbit user" on a public product -> "EXTERNAL" (with
privileges_required: "LOW")."local user", "local shell",
"local access" -> "LOCAL"."peer <role> in same job/cluster/pod", "co-tenant", "adjacent workload", "NCCL peer rank" -> "IN_CLUSTER"."malicious dependency",
"upstream package", "build-time", "CI pipeline" -> "SUPPLY_CHAIN"."host hypervisor", "host OS",
"hypervisor access" -> "HOST_SYSTEM"."physical access", "fault injection" -> "PHYSICAL_LONG_TERM" or
"PHYSICAL_TEMPORARY" based on barrier."EXTERNAL": If the component is "EXPOSED", or
it's an auth bypass on a public portal."LOCAL": If it's a local privilege escalation
(LPE) or SUID exploit."IN_CLUSTER": If it targets in-cluster
infrastructure (CSI/CNI) from a pod."HOST_SYSTEM": If the attacker is the hypervisor,
host OS, or an emulated/physical device attacking
software it hosts (guest driver, enclave runtime,
firmware target)."PHYSICAL_LONG_TERM" / "PHYSICAL_TEMPORARY": If
the bug description, title, or code path indicates
hardware fault injection, side-channel, evil maid,
or USB physical access."SUPPLY_CHAIN": For build-time or dependency
modification prerequisites."INTERNAL_NETWORK": Default fallback for other
internal components.attacker_position is "LOCAL" or
"IN_CLUSTER", you MUST resolve
inferred_exposure to "INTERNAL" (using 0.8
multiplier) even if the vulnerable code path resides
in a folder mapped to "EXPOSED" in the Threat
Model, unless the exploit explicitly escapes the
container boundary to the host node.attacker_position is "EXTERNAL", you
MUST resolve inferred_exposure to "EXPOSED"
(using 1.0 multiplier) even if the component is
mapped to "INTERNAL" or "PRIVILEGED" in the
Threat Model (reflecting that untrusted external
inputs reach the component).availability_tier in the Threat Model (if missing, default
to STANDARD):
LOW_CRITICALITY: Reduce multiplier to 0.5.STANDARD: Reduce multiplier to 0.8.CRITICAL: Keep multiplier at 1.0.user_interaction is REQUIRED (e.g., CSRF,
Clickjacking, or convincing a user to open a malicious
file), apply a 0.7 multiplier to the Context Multiplier
(e.g., if exposure is Internal (0.8) and user interaction is
required, the combined multiplier is 0.8 * 0.7 = 0.56). This
ensures these findings are capped below the CRITICAL
threshold.production_viability is SAMPLE_OR_TEST:
0.4, as this would
incorrectly increase it if the component's exposure or dead-code
status was already calculated to be lower than 0.4 (e.g.
0.2).executive_summary, explicitly state that this is not a
production bug. The recommendation MUST focus on fixing the
example/test so that developers do not copy insecure patterns
into production code.production_viability is CONDITIONAL_VIABLE:
0.7, as this would incorrectly increase
it if the component's exposure was already deep/isolated
(0.5).executive_summary, document the specific conditions
required for viability.Final Score (Hazard) = (Impact + Likelihood) * Multiplier (Capped at 10.0).
Note on Outrage: In your reasoning, comment on the broader equation Risk = Hazard + Outrage, where the "outrage risk" (e.g., reputational damage, user sentiment fallout) is taken into account. Do not include the outrage factor in the final numerical score.
Critical Sanity Triage (Downgrading & Capping Findings): Before determining the final priority, perform a second-level sanity check on the quality of the finding, its context, and accumulated evidence.
Core Principle - Marginal Capability: The final severity and priority of a finding are strictly bounded by the marginal capability gained by the attacker over their prerequisite position. If the exploit does not grant the attacker significant new control, access, or capabilities beyond what is already inherent to their starting position (or already possessed via legitimate means), the finding must be capped or downgraded. This principle applies generally to all findings; the specific rules listed below are common applications of this principle but are not exhaustive.
Check if the THREAT_MODEL.md defines any Calibration Overrides (e.g.,
LIFT_CAP: PHYSICAL_LONG_TERM). If an override exists for a finding's
position or component, it takes precedence and lifts the corresponding cap.
Otherwise, the caps and downgrades below (and general applications of the
Marginal Capability principle) override any upgrades calculated in Section 2
(including the Security Control Bypass upgrade). You MUST apply the
specific caps and downgrades below, and should also apply the general
principle to cap or downgrade other findings that offer low marginal
capability. Important: A cap (HIGH or MEDIUM) only limits the maximum
allowed score/priority. It must NOT upgrade a lower score/priority (e.g., a
finding with a score of 5.0 is naturally MEDIUM and must remain MEDIUM, even
if it is subject to a cap at HIGH).
Precedence: Evaluate ALL rules below. If multiple caps apply, the most
restrictive wins (Force-LOW > cap-MEDIUM > cap-HIGH). Record every rule
that fired in sanity_triage_applied as a semicolon-separated list, most
restrictive first (e.g., "Local Attack Vector; Internal/Nested"), so the
effective cap is auditable.
Force-Downgrade to LOW (Cap at 2.0 / LOW Priority):
repro_status: "failed_to_reproduce"), was not attempted
(repro_status: "not_attempted"), or the repro_status field was
missing (treated as "not_attempted"). Regardless of theoretical
production viability.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.
mantis-calibrate is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
mantis-calibrate reduced setup friction for our internal harness; good balance of opinion and flexibility.
Keeps context tight: mantis-calibrate is the kind of skill you can hand to a new teammate without a long onboarding doc.
mantis-calibrate has been reliable in day-to-day use. Documentation quality is above average for community skills.
mantis-calibrate fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
Registry listing for mantis-calibrate matched our evaluation — installs cleanly and behaves as described in the markdown.
Solid pick for teams standardizing on skills: mantis-calibrate is focused, and the summary matches what you get after install.
Useful defaults in mantis-calibrate — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
mantis-calibrate is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
mantis-calibrate has been reliable in day-to-day use. Documentation quality is above average for community skills.
showing 1-10 of 30