162-java-profiling-analyze — Claude Code skill: read Java profiles
This skill reads the Java profiling data you already collected — flamegraphs, JFR, GC logs, thread dumps — and sorts the problems it finds by priority.
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a claude-codeWhat 162-java-profiling-analyze does
It is step two of the profiling workflow in Plinth Toolkit. The skill starts by taking inventory of artifacts in profiler/results/: allocation-flamegraph, heatmap-cpu, memory-leak, plus *.jfr, *.log and *.txt files. From there it looks for leaks and excessive allocations, GC pressure, CPU hotspots, blocking, deadlocks, lock contention and thread pool saturation.
Findings go into two files: docs/profiling-problem-analysis-YYYYMMDD.md and docs/profiling-solutions-YYYYMMDD.md. Each issue gets an Impact (1–5) and Effort (1–5) score so you know what to fix first. The skill works with async-profiler, JFR, JProfiler/YourKit, GCViewer, flamegraphs and heatmaps.
The constraint that matters most is baked into the skill itself: it checks that your captures came from a realistic load before drawing conclusions. A profile taken against an empty database will send you chasing the wrong hotspot, so the skill asks you to record assumptions and limitations. It also cross-references several files instead of trusting one. If your request is ambiguous, it stops and asks a clarifying question first.
What it helps with
- read a flamegraph and locate CPU hotspots
- tell a memory leak apart from ordinary GC pressure
- merge findings from JFR, GC logs and thread dumps into one report
- rank performance bugs by Impact and Effort
- check that captures reflect a realistic load
Example prompts for the agent
- Analyze the JFR profile in profiler/results/
- Go through the GC logs and thread dumps, find the bottlenecks
- Prioritize the bottlenecks by Impact/Effort and write the report to docs/
How to install 162-java-profiling-analyze
1Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a claude-code2Manually: put the files in place
~/.claude/skills/162-java-profiling-analyze/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/162-java-profiling-analyze/
1Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a codex2Manually: put the files in place
.agents/skills/162-java-profiling-analyze/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a cursor2Manually: put the files in place
.cursor/skills/162-java-profiling-analyze/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install jabrena/plinth 162-java-profiling-analyze2Manually: put the files in place
.github/skills/162-java-profiling-analyze/SKILL.md1Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a gemini-cli2Platform CLI
gemini skills install https://github.com/jabrena/plinth --path skills/162-java-profiling-analyzeManually: put the files in place
.devin/skills/162-java-profiling-analyze/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about 162-java-profiling-analyze
How do I install 162-java-profiling-analyze in Claude?
Run npx skills add jabrena/plinth --skill 162-java-profiling-analyze -a claude-code. The skill then lives at ~/.claude/skills/162-java-profiling-analyze/SKILL.md.
What does 162-java-profiling-analyze do?
It analyzes Java profiling output: flamegraphs, JFR, GC logs, thread dumps. It identifies memory leaks, CPU hotspots and threading problems, then documents them and assigns priorities.
Which files does the skill create?
Two reports under docs/: profiling-problem-analysis-YYYYMMDD.md with the problem breakdown and profiling-solutions-YYYYMMDD.md with solution options.
Source text
SKILL.md · Apache-2.0
--- name: 162-java-profiling-analyze description: Use when you need to analyze Java profiling data collected during the detection phase — including interpreting flamegraphs, memory allocation patterns, CPU hotspots, threading issues, systematic problem categorization, evidence documentation with profiling-problem-analysis and profiling-solutions markdown files, or prioritizing fixes using Impact/Effort scoring. This should trigger for requests such as Analyze JFR profile; Analyze the profile; Analyze the performance; Analyze the memory; Analyze the threading; Analyze GC logs from profiling; Prioritize Java profiling bottlenecks by impact. Part of Plinth Toolkit license: Apache-2.0 metadata: author: Juan Antonio Breña Moral version: 0.19.0 --- # Java Profiling Workflow / Step 2 / Analyze profiling data Analyze profiling results systematically: inventory results (flamegraphs, JFR, GC logs, thread dumps), identify problems (memory leaks, CPU hotspots, threading issues), document findings using standardized templates (profiling-problem-analysis-YYYYMMDD.md, profiling-solutions-YYYYMMDD.md), prioritize using Impact/Effort scores, and correlate multiple profiling files for validation. **What is covered in this Skill?** - Inventory: scan profiler/results/ for allocation-flamegraph, heatmap-cpu, memory-leak, *.jfr, *.log, *.txt - Problem identification: memory (leaks, excessive allocations, GC pressure), performance (CPU hotspots, blocking), threading (deadlocks, contention, pool saturation) - Documentation: docs/profiling-problem-analysis-YYYYMMDD.md, docs/profiling-solutions-YYYYMMDD.md - Prioritization: Impact (1–5) / Effort (1–5), focus on high priority first - Tools: async-profiler, JFR, JProfiler/YourKit, GCViewer, flamegraphs, heatmaps **Scope:** Validate profiling results represent realistic load scenarios. Cross-reference multiple files. Include quantitative metrics. ## Constraints Validate profiling results represent realistic load before analysis. Document assumptions and limitations. Cross-reference multiple files. - **VALIDATE**: Ensure profiling results represent realistic load scenarios before analysis - **DOCUMENT**: Record assumptions and limitations in analysis reports - **CROSS-REFERENCE**: Use multiple profiling files to validate findings - **BEFORE APPLYING**: Read the reference for problem analysis and solutions templates - **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes - **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance ## When to use this skill - Analyze JFR profile - Analyze the profile - Analyze the performance - Analyze the memory - Analyze the threading - Analyze the GC - Analyze the profiling - Prioritize Java profiling bottlenecks by impact - Performance analysis ## Workflow 1. **Read analysis reference and inventory inputs** Read `references/162-java-profiling-analyze.md` and inventory profiling artifacts in `profiler/results/`. 2. **Validate data quality and assumptions** Confirm datasets represent realistic load conditions and record assumptions/limitations before drawing conclusions. 3. **Identify and prioritize bottlenecks** Analyze memory/CPU/threading findings, cross-reference multiple files, and prioritize issues by Impact/Effort. 4. **Document findings and solution options** Create `docs/profiling-problem-analysis-YYYYMMDD.md` and `docs/profiling-solutions-YYYYMMDD.md` with quantitative evidence. ## Reference For detailed guidance, examples, and constraints, see [references/162-java-profiling-analyze.md](references/162-java-profiling-analyze.md).
© Juan Antonio Breña Moral · Apache-2.0 · jabrena/plinth