joern-mcp: Skill for Claude Code

.claude/skills/joern-analysis/SKILL.md

joern-analysis is a skill for Claude Code from BlockSecCA/joern-mcp. It costs 36 tokens per session (2,125 once invoked), scanned A, original, MIT.

A workflow for using Joern, a code-analysis tool that builds a map of how program code is structured and connected. It covers importing projects, exploring methods and types, tracing calls, and finding security issues.

In plain words
What is it for?
Inspecting methods, classes, callers, callees, inheritance, source code, parameters, and possible vulnerabilities in an imported codebase.
Why use it?
It gives a repeatable way to understand unfamiliar code and follow data flows instead of relying only on text searches. It also checks that the Joern server is available before analysis.

Skill for Claude Code

Written for Claude Code: user-invocable in frontmatter.

This is BlockSecCA/joern-mcp's own configuration. It tells Claude Code how to work on joern-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything joern-mcp configures →

Reuse

Borrowing it

Nothing to install: this file belongs to BlockSecCA/joern-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/BlockSecCA/joern-mcp/main/.claude/skills/joern-analysis/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/BlockSecCA/joern-mcp

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for joern-analysis

README.md
[![agentmods](https://agentmods.dev/badge/skills/blocksecca/joern-mcp/joern-analysis/github.svg)](https://agentmods.dev/skills/blocksecca/joern-mcp/joern-analysis)
Your own site
<a href="https://agentmods.dev/skills/blocksecca/joern-mcp/joern-analysis"><img src="https://agentmods.dev/badge/skills/blocksecca/joern-mcp/joern-analysis/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for joern-analysis

Your own site · 80×15
<a href="https://agentmods.dev/skills/blocksecca/joern-mcp/joern-analysis"><img src="https://agentmods.dev/badge/skills/blocksecca/joern-mcp/joern-analysis.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 36 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,125 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00036 $0.02125
Opus 5 $0.00018 $0.01063
Sonnet 5 $0.00007 $0.00425
Haiku 4.5 $0.00004 $0.00213

Measured 9d ago against content hash ea556c0ff320, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

joern-analysis scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

call.name("eval|exec|system|popen|spawn|passthru|shell_exec|child_process")
.claude/skills/joern-analysis/SKILL.md · 244 lines

How it starts

The opening of the file, as written. The whole thing — 244 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Joern Security Analysis

Guide for using the joern-mcp tools to analyze code for security issues.

Prerequisites

Joern must be running as a server before using any tools:

joern --server

Always start with check_connection to verify Joern is reachable.

Workflow

1. Connect and import

check_connection          → verify Joern is up
import_code(path, name)   → build the CPG (slow, minutes for large projects)
list_projects             → see what's loaded
switch_project(name)      → activate a previously imported project

2. Explore the codebase

get_methods(filter?)      → list methods, optionally filtered by name
get_types(filter?)        → list classes/types
get_calls(methodName?)    → find call sites
get_source(methodName)    → read a method's source code
get_parameters(methodName)→ see parameter types and names

3. Navigate relationships

get_callers(methodName)   → who calls this method?
get_callees(methodName)   → what does this method call?
get_base_classes(className)    → parent/base classes (inheritance chain)
get_derived_classes(className) → child classes (all implementations)

4. Security analysis

find_vulnerabilities(categories?)  → structural pattern scan (reconnaissance)
taint_analysis(source, sink)       → trace data flow from source to sink
reachable_by(source, sink)         → check if sink is reachable from source
get_data_flows(source, sink)       → get all flow paths between two points

Recommended flow: find_vulnerabilities first to identify interesting patterns, then taint_analysis to confirm exploitability with full data flow paths.

5. Raw queries

query(cpgql)              → run arbitrary CPGQL for anything not covered above

CPGQL Expression Reference

For taint_analysis, reachable_by, and get_data_flows, source and sink are CPGQL expressions relative to cpg.. They get wrapped as:

val source = cpg.<your_expression>; val sink = cpg.<your_expression>; sink.reachableByFlows(source).p

Read the full file on GitHub · 244 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 244 lines · 36 tokens per session scan A ea556c0ff320

Subscribe to this mod's changes

joern-analysis is a skill published in the GitHub repository BlockSecCA/joern-mcp (5 stars, last pushed 2mo ago), licensed MIT. It adds 36 tokens to every session and 2,125 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

implementing-semgrep-for-custom-sast-rules

Write custom Semgrep SAST rules in YAML to detect application-specific vulnerabilities, enforce coding standards, and integrate into CI/CD pipelines.

xalgorix/xalgorix · 37 tokens

example-team-skill

This is an example SKILL.md file demonstrating how to add a team-specific skill via the --customizations-dir overlay feature.

advanced-security/codeql-development-mcp-server · 0 tokens

implementing-semgrep-for-custom-sast-rules

Write custom Semgrep SAST rules in YAML to detect application-specific vulnerabilities, enforce coding standards, and integrate into CI/CD pipelines.

Njones17/AI-agent-master-cyber-skills-list · 37 tokens

analyzing-packed-malware-with-upx-unpacker

Identifies and unpacks UPX-packed malware samples, including binaries with modified UPX magic bytes or headers that block automated decompression, to recover the original executable for static analysis. Use when a sample shows high entropy, minimal imports, or only LoadLibrary/GetProcAddress in its import table, or…

mukul975/Anthropic-Cybersecurity-Skills · 88 tokens

analyzing-malicious-pdf-with-peepdf

Perform static analysis of malicious PDF documents using peepdf, pdfid, and pdf-parser to extract embedded JavaScript, shellcode, and suspicious objects. Use when triaging a suspicious PDF attachment from a phishing email, analyzing a PDF-based exploit document, or building detection signatures for weaponized PDF…

mukul975/Anthropic-Cybersecurity-Skills · 73 tokens

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically…

mukul975/Anthropic-Cybersecurity-Skills · 84 tokens