marketplace/bundles/pm-dev-java-cui/skills/cui-http/SKILL.md
CUI HTTP standards for de.cuioss:cui-http — HttpHandler client configuration, HttpResult error handling, async adapters with ETag caching and resilient retry, custom content converters, SSL/TLS context, HTTP status classification, and inbound HTTP security input-sanitization (de.cuioss.http.security validation pipelines)
npx skillsauth add cuioss/plan-marshall cui-httpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
REFERENCE MODE: This skill provides reference material. Load specific standards on-demand based on current task.
CUI-specific HTTP client standards for projects using de.cuioss:cui-http. Covers HttpHandler, HttpResult sealed interface, and async-first adapters.
Execution mode: Reference library; load standards on-demand for HTTP client implementation tasks.
Prohibited actions:
Constraints:
de.cuioss:cui-http libraryde.cuioss:cui-http (HttpHandler, HttpResult, HttpAdapter)CRITICAL: Load these standards for any HTTP client implementation work.
Read: standards/cui-http.md
This provides the foundational rules:
HttpHandler builder for all HTTP client configurationHttpResult<T> sealed interface for result handlingSimple HTTP request — Use HttpHandler directly:
HttpHandler handler = HttpHandler.builder()
.uri("https://api.example.com/data")
.connectionTimeoutSeconds(10)
.readTimeoutSeconds(30)
.build();
Resilient HTTP with caching — Compose ETag + retry adapters:
HttpAdapter<String> adapter = ResilientHttpAdapter.wrap(
ETagAwareHttpAdapter.<String>builder()
.httpHandler(httpHandler)
.responseConverter(StringContentConverter.identity())
.build(),
RetryConfig.defaults()
);
Result handling — Use pattern matching on HttpResult:
return switch (result) {
case HttpResult.Success<ConfigData>(var config, var etag, var status) -> {
updateCache(config, etag);
yield true;
}
case HttpResult.Failure<ConfigData> failure -> {
if (failure.fallbackContent() != null) {
yield true; // Graceful degradation
}
yield failure.isRetryable();
}
};
When the task reads HTTP components from an untrusted inbound request (servlet, JAX-RS resource, request filter — path segments, query parameters, header names/values), load the Inbound HTTP Security section of standards/cui-http.md. It documents the de.cuioss.http.security validation pipelines (PipelineFactory, HttpSecurityValidator, SecurityConfiguration) — the server-side counterpart to the client-side adapters above. Validate every externally-sourced HTTP component at the boundary before use.
Type-safe result handling with exhaustive pattern matching:
HttpResult.Success<T> — Content with ETag and HTTP statusHttpResult.Failure<T> — Error with optional fallback content and error category| Category | Retryable | Examples |
|----------|-----------|----------|
| NETWORK_ERROR | Yes | Connection failures, timeouts |
| SERVER_ERROR | Yes | 5xx responses |
| CLIENT_ERROR | No | 4xx responses |
| INVALID_CONTENT | No | Content conversion failures |
| CONFIGURATION_ERROR | No | Setup/config issues |
| Standard | Purpose |
|----------|---------|
| standards/cui-http.md | HttpHandler builder, HttpResult pattern matching, adapters, error categories, and inbound HTTP security (input-sanitization pipelines) |
pm-dev-java:java-core — General Java patternspm-dev-java-cui:cui-http-testing — HTTP testing with CUI MockWebServerpm-dev-java:java-security — Generic Java security surface (inbound jakarta.validation, secure logging, secrets, startup validation). The de.cuioss.http.security pipelines above are the CUI-specific HTTP realization; load java-security for the framework-agnostic Java mechanics — see java-security/SKILL.md.plan-marshall:persona-security-expert — Cross-cutting security foundations. cui-http documents an inbound HTTP trust boundary; the conceptual architecture behind it (allow-list vs deny-list, canonicalize-before-validate, fail-closed) lives in plan-marshall:persona-security-expert's standards/input-validation-trust-boundaries.md.development
Domain-owned OpenRewrite log-line finding parser for the java-cui domain — parses the
development
Domain-owned OpenRewrite marker detection for the java-cui domain — scans Java/Kotlin sources for cui-rewrite TODO markers, categorizes them by recipe, and fails the gate on any detected marker
development
Operator control surface for the marshalld build server — enrol/drop a project in the machine-global registry (the opt-in enable signal and anti-laundering wall), manage the daemon lifecycle (start, stop, drain, status, install, upgrade) version-pinned to the verified bundle copy, and inspect the daemon's per-project interaction-audit log (read-only)
tools
The tiny build-consumption client for the marshalld build server — submit a build job, bounded long-poll for its result, ping the daemon identity, and preflight registry-plus-liveness in one call; consumption only, never provisioning or enrolment