See Mule Skills in action¶
These two journeys show what a Mule developer actually receives. They are grounded in the sample
projects shipped by mule-build at 5b252ed
and mule-lint at b828113,
using mule-lint@2.0.0 and mule-build@3.0.0, measured on 2026-10-03 with Java 17.
The samples remain at these exact commits; tool upgrades do not silently change the source baseline.
This is not a gallery where every skill is forced to produce a file. Some skills change source or tests; some return a decision, review, diagnosis, or operational assessment. Each journey says what was observed from the tools and shows the representative handoff a developer should expect.
Journey 1: make a small Mule change and prove what is ready¶
Developer request
Add currency: "USD" to the order returned by the sample flow. Extend the existing MUnit test,
validate and package the application, and review the result. Do not commit or deploy anything.
Why these skills participate¶
mule-development owns the DataWeave change, mule-testing owns the behavior assertion,
mule-build owns local readiness, tests, and packaging, and mule-review turns the evidence into a
readiness verdict. API design is not added because this sample has no RAML or OAS contract to change.
Documentation, operations, and troubleshooting are not added because the request makes no document
stale and provides no runtime incident or telemetry.
Source and test change¶
The pulled baseline contained one Mule flow, one MUnit suite, one executable test, and two assertions. In an isolated copy of the sample, the returned value and its test became:
output application/json
---
[{ id: "ORD-1001", status: "READY", total: 42.50, currency: "USD" }]
<munit-tools:assert-that
doc:name="Currency Is Stable"
expression="#[payload[0].currency]"
is="#[MunitTools::equalTo('USD')]" />
That is the intended production-and-test delta. It does not, by itself, prove that the application is releasable.
Observed validation evidence¶
| Gate | Observed result | Product meaning |
|---|---|---|
| Project inventory | 1 flow, 1 MUnit suite, 1 test, now 3 assertions | The change has a focused test target |
| Embedded-expression check | Passed | No malformed embedded expression was found |
Build doctor for test |
Passed | Maven, the POM, Mule/MUnit plugins, source layout, and a compatible local runtime were detected |
| Secure-property enforcement | Passed; 1 Mule file checked | The documented property-name/reference checks found no violation; this is not a general secret scan |
mule-lint@2.0.0 |
Complete scan, exit 1: 1 error, 6 warnings, 5 information findings |
The sample still has review findings, including no flow error handler |
| Focused MUnit selector | Exit 1: no matching suite found |
The requested suite/test selector was not resolved; the full run below executed the test |
| Full MUnit run | Passed: 1 run, 0 failures, 0 errors, 0 skipped | The test, including the added currency assertion, executed successfully |
| Normal package | Passed with tests enabled; 1 test passed and a JAR was produced | Local test and packaging evidence is available; lint findings still need review |
The focused command used --suite orders-test-suite --test list-orders-flow-returns-an-order.
It did not select a suite. Running test without selectors and then package both succeeded with
tests enabled. The selector result remains a separate limitation; it does not erase the successful
full-suite evidence. No tests-skipped package was used. The default lint scan evaluated no configured
quality gate; its complete execution and non-clean findings are separate facts.
Representative developer handoff¶
Outcome: Implemented in an isolated copy of the pinned mule-build sample.
Changed:
- orders.xml returns currency: "USD".
- orders-test-suite.xml asserts payload[0].currency == "USD".
Evidence:
- Embedded-expression and secure-property checks passed.
- mule-lint is non-clean: 1 error, 6 warnings, 5 information findings.
- Focused MUnit selection found no suite; the full run passed 1 test with no failures or skips.
- Normal packaging passed with tests enabled and produced a JAR with embedded coordinates and SHA-256.
Review verdict: Not ready to release. Test and packaging evidence passed; clear or disposition the
lint findings before treating the artifact as a release candidate.
Release actions: None. No commit, tag, publish, or deployment was performed.
The useful output here is not a green-looking artifact. It is a bounded change plus enough evidence for a developer to know exactly what passed, what did not, and what decision remains.
Journey 2: review a deliberately flawed Mule project without changing it¶
Developer request
Review this Mule application for correctness and release risk. Report only; do not edit files or
change repository or runtime state.
The mule-lint sample
is intentionally flawed so a review can demonstrate prioritization instead of manufacturing a
perfect result.
Observed tool evidence¶
mule-lint@2.0.0 returned a complete report-v1 scan of three Mule files and exited 1 with:
Errors: 1 Warnings: 10 Info: 9
No configured quality gate was evaluated in this default scan. The non-zero exit reflects the error finding; execution completeness is reported separately.
The release-blocking error is at src/main/mule/orders-api.xml:31: flow
get-order-by-id-flow has no error handler (MULE-003). Warnings also cover correlation
handling, HTTP status handling, rate limiting, missing TLS context on an HTTPS backend,
unversioned listener paths, missing API specification evidence, inbound authentication
evidence, and missing environment properties. Informational findings include missing
component descriptions, Try-scope guidance around HTTP requests, a missing health endpoint, and
TEST-001: four production flows with no executable MUnit tests.
Representative review handoff¶
[High] Add an explicit error-handling contract for get-order-by-id-flow
Evidence: mule-lint reports MULE-003 at src/main/mule/orders-api.xml:31 because the flow has no
error handler.
Impact: connector, transformation, or lookup failures can escape without the API's intended status,
payload, logging, and correlation behavior. Release behavior is therefore not established.
Fix direction: define or reference the project's approved error handler, then add MUnit coverage for
the expected error event and rerun lint plus the focused and full test gates.
The review would then list the ten warnings in priority order, distinguish standards findings from demonstrated runtime defects, and state its coverage: repository XML and static rules were inspected; runtime logs, metrics, deployment state, and API contract behavior were not available. No source, comment, commit, PR, or runtime state is changed by the review.
What these journeys do not claim¶
- They do not demonstrate API contract design because neither selected journey contains an API specification that needs a product decision.
- They do not invent an operational health report or root-cause analysis without runtime evidence.
- They do not treat a generated JAR as proof that tests passed or a deployment was authorized.
- They do not imply that every skill creates a file. See the skill catalog for each skill's default effect and expected handoff.
For reusable request patterns and ownership boundaries, continue to the workflow guide.