How this skill is triggered — by the user, by Claude, or both
Slash command
/Gatling:gatling-convert-from-jmeterThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Search for files with `.jmx` extension
.jmx extensionEither find an existing Gatling project or initialize a new Gatling project:
Each ThreadGroup converts to a scenario.
IF serialize_threadgroups true:
andThen
ELSE:setUp blockFiles referenced in elements such as:
should be copied to the resources directory in the Gatling project.
| JMeter | Gatling |
|---|---|
follow_redirects = true | default setting, do nothing |
follow_redirects = false | disableFollowRedirect |
CSVDataSet converts to a csv feeder.
IF there are several instances of CSVDataSet referencing the same file name:
shareMode.group:
The jmesPath Gatling check extracts Strings, meaning that non String values get serialized back into JSON.
Using findAll with jmesPath is a mistake but you can tell Gatling the expected type with an extra step.
Note that the check will then fail is the actual value doesn’t match the expected type.
jmesPath("foo").ofString(),
jmesPath("foo").ofBoolean(),
jmesPath("foo").ofInt(),
jmesPath("foo").ofLong(),
jmesPath("foo").ofDouble(),
// JSON array
jmesPath("foo").ofList(),
// JSON object
jmesPath("foo").ofMap(),
// anything
jmesPath("foo").ofObject()
)
Some functions have variants that saves the result to a variable (e.g.: __Random(0,10,myVar)) but Gatling
Expression Language cannot save variables as a side effect.
IF a variable needs to be saved inside the function AND the function is used within an Expression Language
When parsing dates, use java.time.format.DateTimeFormatter.ofPattern with system default zone and store it
outside a function to avoid creation cost overhead.
For regular expression, use java.util.regex.Pattern.compile and store it outside a function to avoid creation cost
overhead.
Convert these functions to what JMeter uses under the hood:
changeCase => toUpperCase or toLowerCase with Locale.ROOT or capitalizedigest => java.security.MessageDigesturldecode => java.net.URLDecoder.decodeurlencode => java.net.URLEncoder.encodeUUID => java.util.UUID.randomUUIDImport org.unbescape:unbescape for the following escaping functions:
escapeHtml => HtmlEscape.escapeHtml5escapeXml => XmlEscape.escapeXml10unescape => JavaEscape.unescapeJavaunescapeHtml => HtmlEscape.unescapeHtmlUse the build-tool skill if available.
After the conversion in Step 3, prompt the user for possible enhancements that are more idiomatic to Gatling.
IF ThreadGroup.ramp_time is 0 or 1:
rampUsers to atOnceUsersnpx claudepluginhub gatling/gatling-ai-extensions --plugin gatlingDesigns and executes performance tests with k6 (JavaScript), JMeter, Gatling, and Artillery for load, stress, soak, spike scenarios. Covers baselines, bottleneck analysis, CI gates, custom metrics, and Grafana visualization.
Creates and runs load tests with k6, JMeter, and Artillery for web apps and APIs. Validates performance under stress, spike, soak, scalability to detect bottlenecks.
Stress tests, capacity plans, and performance benchmarks with k6, Artillery, and Gatling. Detects existing load test infrastructure, designs scenarios, executes tests, and analyzes results against thresholds.