Gauge chart
chart.gauge
Overview
Render a deterministic safe Gauge from exact decimal strings, optional target and semantic threshold ranges. Out-of-domain values reject unless showOverflow is explicit. Threshold gaps remain unclassified. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance.
A gauge must make domain, overflow and threshold arithmetic explicit. You provide exact decimals; we return the normalized position and safe SVG.
Reliability
Exact decimal strings are preserved in gaugeResult and identical input produces byte-identical SVG. Declared failures: CHART_CAPACITY_EXCEEDED — trigger: the gauge cannot fit the requested canvas or the predicted output exceeds the safe inline envelope; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_OUTPUT_TOO_LARGE — trigger: the inline SVG byte budget would be exceeded at the requested size and data density; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_UNSAFE_OUTPUT — trigger: the finished SVG failed our final safety re-validation (this is on us, not your data); retryable: no; unchanged input: will not succeed; next: contact support with the request id — retrying the same input will not help.
Context footprint
One value, one target and at most twelve threshold ranges. A successful call costs 3 execution credits.
When to use it
When one exact bounded position is the primary reading.
When progress starts at zero across several items.
Scope
Non-goals
- Completion lists
- Time series
- Caller-authored SVG
Properties
Capabilities
Cost & billing
Flat rate per invocation
File handling
How we handle your data
What this means
This skill may receive sensitive content and may return submitted, transformed, extracted, or reformatted content.
Squillify guarantees
- Runs inside Squillify
- This skill runs inside Squillify.
- Payloads are not sent to an external service by this skill.
- Squillify does not permanently store submitted payloads.
- Telemetry records metadata only, not submitted content.
- Submitted payloads are not used for training.
- Submitted payloads are not reviewed by humans.
- This skill does not target sensitive data.
- The response may contain submitted or transformed content.
Your responsibility
Squillify does not determine whether submitted content is sensitive. Your application is responsible for deciding what data it is allowed to submit. Your application is responsible for securing the response.
Input schema
| Field | Type | Required | Description |
|---|---|---|---|
| value | string | Yes | Required exact decimal observed value. |
| min | string | Yes | Required exact decimal lower bound. |
| max | string | Yes | Required exact decimal upper bound greater than min. |
| target | string | No | Optional exact decimal target inside min..max; omit to render no target marker. |
| thresholds | array | No | Optional 1..12 ordered, non-overlapping exact ranges with id, label, min, max and meaning; omit for unclassified status and no threshold bands. |
| colorScale | object | No | Closed kind|reverse color ramp. kind is sequential (blue, default) or diverging (blue/green); reverse=false runs the default stop order and true reverses it. |
| shape | string | No | semicircle|fullArc|linear; default semicircle. |
| orientation | string | No | horizontal|vertical for linear only; default horizontal. |
| outOfRange | string | No | reject|showOverflow; default reject. |
| indicator | string | No | arc|needle|marker; default arc. |
| labels | object | No | Closed booleans value|bounds|target|ticks|thresholds|status; each defaults true. |
| scale | object | No | Closed tickCount field: auto or integer 2..12; automatic count is reduced only to preserve deterministic label spacing; omit for tickCount=auto. |
| valueFormat | object | No | Closed deterministic visible-number format: style, notation, currency, unit, minimumFractionDigits, maximumFractionDigits, useGrouping, prefix, suffix; omit for two fixed decimal digits. |
| localization | object | No | Closed object with locale string; omit for locale en. It affects visible formatting only. |
| title | string | No | Optional bounded visible title; omit to generate the accessible gauge title. |
| subtitle | string | No | Optional bounded visible subtitle; omit to render no subtitle. |
| caption | string | No | Optional editorial caption up to 240 code points; omit to render no caption. |
| source | string | No | Optional editorial source up to 240 code points; omit to render no source. |
| period | string | No | Optional editorial period up to 120 code points; omit to render no period. |
| layout | object | No | Closed margin, plotPadding and insufficientSpace properties; omit for automatic margin, profile padding and reject-on-insufficient-space. |
| accessibility | object | No | Closed title and description string properties; omit to use the visible or generated title and the generated exact data summary. |
| behavior | object | No | Optional bounded host behavior request; omitted means static SVG. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
| width | integer | No | Canvas width in pixels, 100..1600 (optional; default 800). Outside that range the request is refused as invalid input rather than clamped. The ceiling is the size a chart is read at — a full-HD dashboard or a report page; beyond it the canvas stops being what limits how much fits, and type sized for the canvas is illegible once the export is displayed smaller. It applies per side, so a tall portrait canvas for a long horizontal ranking is allowed. |
| height | integer | No | Canvas height in pixels, 100..1600 (optional; default 480). Outside that range the request is refused as invalid input rather than clamped. The ceiling is the size a chart is read at — a full-HD dashboard or a report page; beyond it the canvas stops being what limits how much fits, and type sized for the canvas is illegible once the export is displayed smaller. It applies per side, so a tall portrait canvas for a long horizontal ranking is allowed. |
| theme | string | No | Visual language: basic, modern or squillify (optional; default squillify). An unregistered value is rejected with the registered names listed — we never substitute silently. |
| surface | string | No | Surface the theme renders on: dark or light (optional; default light). |
| density | string | No | How tightly the chrome is packed: compact, standard or spacious (optional; default standard). Density scales spacing only — it never lowers a legibility minimum. |
| visualProfile | string | No | What the SVG promises about the host font: portable or certified (optional; default portable). The default is layout-deterministic and tolerates substitution; certified refuses text the certified metrics cannot fully measure. |
| style | object | No | Optional bounded paint and typography styling; omit it to use the selected theme defaults. text.size is expressed in normalized design pixels at an 800-pixel reference width, so equivalent roles match at equal CSS width. It never changes data or accessibility. 'contract' selects the published semantics. 'tokens' sets design tokens; 'rules' applies typed properties to a role and optional series/category facets; 'palette' accepts a digest-checked palette; 'css' is a bounded post-layout stylesheet. The styleCapabilities section publishes this family's accepted roles, properties and copyable examples. For Bar, target one mark with role 'bar' plus seriesIndex and categoryIndex; categoryIndex alone targets that category across series. A minimal rule is {"target":{"role":"bar"},"set":{"paint.fill":"#2563eb"}}. Unsupported typed rules are refused; unsupported CSS is dropped and reported. Do not discover the grammar through trial calls: style validation failures are currently billable. Before calling, read this contract's styleSurface and styleCapabilities sections for the complete rule shape, accepted roles and properties, limits, and copyable examples. |
| output | object | No | Output scoping (optional). Nested key output.idNamespace ([a-z][a-z0-9-]{0,31}) is prefixed onto every generated element id when several charts share one host document; omit for a standalone chart. An invalid namespace is rejected. |
Output schema
| Field | Type | Required | Description |
|---|---|---|---|
| svg | string | Yes | Final script-free canonical SVG. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
| width | integer | Yes | Resolved rendered canvas width in pixels. |
| height | integer | Yes | Resolved rendered canvas height in pixels. |
| viewBox | string | Yes | Rendered coordinate system. |
| gaugeResult | object | Yes | Exact decimal strings for value, domain, normalized position and target/overflow. |
| renderSummary | object | Yes | Always-present bounded scalar summary of the resolved shape, color-scale kind/direction and mark count actually drawn. |
| transformationSummary | object | Yes | Always-present bounded report of whether ticks or threshold labels were adapted and the affected counts. |
| behavior | object | No | HOST_INTERACTIVE manifest, data index, digest-bound artifact and closed plans; present only when behavior is requested. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
| styleReport | object | No | Always reports the resolved typographyProfile and fontMetrics contract, plus tokensApplied, rulesApplied, typedRulesApplied, typedAssignmentsApplied, rulesDropped, declarationsDropped and, when anything was dropped, a bounded list of reasons. |
| warnings | array | No | Present when the render succeeded with a known degradation. Each entry is an object with a stable code, a message and details. Every chart can emit FONT_SUBSTITUTION_POSSIBLE under visualProfile 'portable', FONT_GLYPH_UNMEASURED when a code point falls outside the certified metrics, and CHART_STYLE_PARTIALLY_APPLIED when part of your styling was dropped — styleReport then names which part and why. Codes are stable for agent routing. GAUGE_VALUE_OVERFLOW reports exact acknowledged overflow direction and amount. |
API contract
POST /v1/executecurl -sS -X POST "$BASE/v1/execute" \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"skillKey":"chart.gauge","input":{"value":"72","min":"0","max":"100","target":"80","title":"Capacity"}}'import { Squillify } from "@squillify/sdk";
const sq = new Squillify({ apiKey: process.env.SQUILLIFY_API_KEY });
const { output } = await sq.execute("chart.gauge", {"value":"72","target":"80","min":"0","max":"100","title":"Capacity"});Errors
| Code | HTTP | Retryable | Description |
|---|---|---|---|
| VALIDATION_ERROR | 400 | No | The request payload failed schema validation. |
| UNAUTHORIZED | 401 | No | Missing or invalid API key. |
| SKILL_NOT_ACCESSIBLE | 403 | No | The API key is not granted access to this skill. |
| SKILL_NOT_AVAILABLE_FOR_PLAN | 403 | No | This skill is not included in your current plan. |
| PLAN_ELIGIBILITY_UNAVAILABLE | 503 | Yes | Plan eligibility could not be decided. Retry after backoff. |
| SKILL_NOT_FOUND | 404 | No | The requested skill or version does not exist. |
| TENANT_RATE_LIMITED | 429 | Yes | Request rate limit exceeded. Retry after backoff. |
| QUOTA_EXCEEDED | 429 | Yes | Plan quota exhausted. Retryable once the quota period resets. |
| EXECUTION_TIMEOUT | 504 | Yes | Execution exceeded the allowed time budget. |
| CHART_CAPACITY_EXCEEDED | 429 | No | A size, quota, rate, or time limit was exceeded. |
| CHART_OUTPUT_TOO_LARGE | 429 | No | A size, quota, rate, or time limit was exceeded. |
| CHART_UNSAFE_OUTPUT | 500 | No | The skill encountered an unexpected execution failure. |
Other limits
| Limit | Value |
|---|---|
| Recommended inline bytes | 32 KiB |
Limitations
- Completion lists
- Time series
- Caller-authored SVG
- Repeated completion items (use chart.progress_bar)
- Unbounded telemetry streams
- Qualitative status without a scale
How to call
POST /v1/execute (requires authentication)
{
"skillKey": "chart.gauge",
"input": {
"value": "72",
"target": "80",
"min": "0",
"max": "100",
"title": "Capacity"
}
}Examples
Semicircle gauge
{
"value": "72",
"target": "80",
"min": "0",
"max": "100",
"title": "Capacity"
}{
"transformationSummary": {
"applied": false,
"operations": [],
"affectedCategoryCount": 0,
"affectedPointCount": 0,
"affectedLabelCount": 0
},
"viewBox": "0 0 800 480",
"height": 480,
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"480\" viewBox=\"0 0 800 480\" role=\"img\" class=\"sq-chart sq-chart--gauge sq-family--kpi-status sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"gauge\" data-sq-family=\"kpi-status\" data-sq-theme=\"squillify\" data-sq-theme-version=\"1\" data-sq-surface=\"light\" data-sq-density=\"standard\" data-sq-a11y-detail=\"full\" aria-labelledby=\"sq-24167f69d049-title-1 sq-24167f69d049-desc-2\"><title id=\"sq-24167f69d049-title-1\">Capacity</title><desc id=\"sq-24167f69d049-desc-2\">Gauge value 72.00 from 0.00 to 100.00; status Unclassified.</desc><style>.sq-chart{--sq-chart-axis:#c9d1df;--sq-chart-font-family:'Squillify Mono', 'IBM Plex Mono', monospace;--sq-chart-grid:#d8dee9;--sq-chart-surface:#ffffff;--sq-chart-text-muted:#667085;--sq-chart-text-primary:#101828;--sq-series-1:#2563eb;--sq-series-2:#6d5ce7;--sq-series-3:#168a5b;--sq-series-4:#c45412;--sq-series-5:#d92d20;--sq-series-6:#667085;font-family:var(--sq-chart-font-family);font-weight:500;}.sq-chart .sq-background{fill:var(--sq-chart-surface);}.sq-chart .sq-title{fill:var(--sq-chart-text-primary);}</style><defs><linearGradient id=\"sq-24167f69d049-fh-0\" gradientUnits=\"objectBoundingBox\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#f0f5fe\"/><stop offset=\"0.54\" stop-color=\"#ffffff\"/></linearGradient></defs><rect x=\"0\" y=\"0\" width=\"800\" height=\"480\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><rect x=\"0\" y=\"0\" width=\"800\" height=\"60\" fill=\"url(#sq-24167f69d049-fh-0)\" class=\"sq-brand-band\"/><rect x=\"0\" y=\"60\" width=\"800\" height=\"420\" fill=\"#f8fafd\" class=\"sq-plot\" data-sq-role=\"plot\"/><line x1=\"0\" y1=\"60\" x2=\"800\" y2=\"60\" stroke=\"#c9d1df\" stroke-width=\"1\" class=\"sq-card-frame\"/><text x=\"12\" y=\"16\" font-size=\"10\" text-anchor=\"start\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"600\" letter-spacing=\"1.2\" textLength=\"36\" lengthAdjust=\"spacing\" fill=\"#2563eb\" class=\"sq-caption\" data-sq-role=\"caption\">GAUGE</text><text x=\"12\" y=\"43\" font-size=\"16\" text-anchor=\"start\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"600\" letter-spacing=\"-0.32\" textLength=\"76\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-title\" data-sq-role=\"title\">Capacity</text><rect x=\"0.5\" y=\"0.5\" width=\"799\" height=\"479\" fill=\"none\" stroke=\"#c9d1df\" stroke-width=\"1\" class=\"sq-card-frame\"/><path d=\"M 265.02 340.96 A 134.98 134.98 0 0 1 534.98 340.96\" fill=\"none\" stroke=\"#c9d1df\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-track\"/><path d=\"M 265.02 340.96 A 134.98 134.98 0 0 1 269.619 306.025\" fill=\"none\" stroke=\"#cfe4fe\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"0\"/><path d=\"M 269.619 306.025 A 134.98 134.98 0 0 1 283.104 273.47\" fill=\"none\" stroke=\"#b7d8fe\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"1\"/><path d=\"M 283.104 273.47 A 134.98 134.98 0 0 1 304.555 245.515\" fill=\"none\" stroke=\"#9fcbfd\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"2\"/><path d=\"M 304.555 245.515 A 134.98 134.98 0 0 1 332.51 224.064\" fill=\"none\" stroke=\"#84bafc\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"3\"/><path d=\"M 332.51 224.064 A 134.98 134.98 0 0 1 365.065 210.579\" fill=\"none\" stroke=\"#67a4fa\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"4\"/><path d=\"M 365.065 210.579 A 134.98 134.98 0 0 1 400 205.98\" fill=\"none\" stroke=\"#4a8df7\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"5\"/><path d=\"M 400 205.98 A 134.98 134.98 0 0 1 434.935 210.579\" fill=\"none\" stroke=\"#3679f1\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"6\"/><path d=\"M 434.935 210.579 A 134.98 134.98 0 0 1 467.49 224.064\" fill=\"none\" stroke=\"#2c68e7\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"7\"/><path d=\"M 467.49 224.064 A 134.98 134.98 0 0 1 495.445 245.515\" fill=\"none\" stroke=\"#2257dd\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"8\"/><path d=\"M 495.445 245.515 A 134.98 134.98 0 0 1 516.896 273.47\" fill=\"none\" stroke=\"#1c47c2\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"9\"/><path d=\"M 516.896 273.47 A 134.98 134.98 0 0 1 530.381 306.025\" fill=\"none\" stroke=\"#1a3a96\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"10\"/><path d=\"M 530.381 306.025 A 134.98 134.98 0 0 1 534.98 340.96\" fill=\"none\" stroke=\"#182c6a\" stroke-width=\"24.296\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"11\"/><path d=\"M 280.084 340.96 A 119.916 119.916 0 0 1 476.437 248.563\" fill=\"none\" stroke=\"#2257dd\" stroke-width=\"7.289\" class=\"sq-mark\" data-sq-role=\"gauge-value\" data-sq-target-key=\"t-gauge-d2b8fd6396d81a73\" data-sq-emphasis=\"focus\" data-sq-meaning=\"info\"/><line x1=\"493.476\" y1=\"273.046\" x2=\"524.926\" y2=\"250.196\" stroke=\"#101828\" stroke-width=\"2\" class=\"sq-reference-line\" data-sq-role=\"gauge-target\" data-sq-target-key=\"t-gauge-9c66dbb6d9c5f164\" data-sq-meaning=\"target\"/><text x=\"227.724\" y=\"340.96\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"25\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-bound-label\">0.00</text><text x=\"278.182\" y=\"219.142\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-tick-label\">25.00</text><text x=\"400\" y=\"168.684\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-tick-label\">50.00</text><text x=\"521.818\" y=\"219.142\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-tick-label\">75.00</text><text x=\"572.276\" y=\"340.96\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"37\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-bound-label\">100.00</text><text x=\"400\" y=\"376.96\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"73\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-target-label\">Target 80.00</text><text x=\"400\" y=\"391.96\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"73\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-status-label\">Unclassified</text><text x=\"400\" y=\"332.96\" font-size=\"16\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"600\" textLength=\"49\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-value-label\" data-sq-role=\"value-label\">72.00</text></svg>",
"width": 800,
"renderSummary": {
"skill": "chart.gauge",
"variant": "semicircle",
"colorScale": "sequential",
"colorScaleReversed": false,
"markCount": 15
},
"gaugeResult": {
"value": "72",
"normalized": "0.72",
"min": "0",
"targetDistance": "8",
"max": "100",
"status": {
"id": "unclassified",
"label": "Unclassified",
"meaning": "info"
}
}
}Linear gauge with acknowledged overflow
{
"value": "112.5",
"min": "0",
"max": "100",
"outOfRange": "showOverflow",
"shape": "linear"
}{
"transformationSummary": {
"applied": false,
"operations": [],
"affectedCategoryCount": 0,
"affectedPointCount": 0,
"affectedLabelCount": 0
},
"viewBox": "0 0 800 480",
"height": 480,
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"480\" viewBox=\"0 0 800 480\" role=\"img\" class=\"sq-chart sq-chart--gauge sq-family--kpi-status sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"gauge\" data-sq-family=\"kpi-status\" data-sq-theme=\"squillify\" data-sq-theme-version=\"1\" data-sq-surface=\"light\" data-sq-density=\"standard\" data-sq-a11y-detail=\"full\" aria-labelledby=\"sq-a7c9141e26bd-title-1 sq-a7c9141e26bd-desc-2\"><title id=\"sq-a7c9141e26bd-title-1\">Gauge 112.5</title><desc id=\"sq-a7c9141e26bd-desc-2\">Gauge value 112.50 from 0.00 to 100.00; status Out of range.</desc><style>.sq-chart{--sq-chart-axis:#c9d1df;--sq-chart-font-family:'Squillify Mono', 'IBM Plex Mono', monospace;--sq-chart-grid:#d8dee9;--sq-chart-surface:#ffffff;--sq-chart-text-muted:#667085;--sq-chart-text-primary:#101828;--sq-series-1:#2563eb;--sq-series-2:#6d5ce7;--sq-series-3:#168a5b;--sq-series-4:#c45412;--sq-series-5:#d92d20;--sq-series-6:#667085;font-family:var(--sq-chart-font-family);font-weight:500;}.sq-chart .sq-background{fill:var(--sq-chart-surface);}.sq-chart .sq-tick-label{fill:var(--sq-chart-text-muted);}</style><defs><linearGradient id=\"sq-a7c9141e26bd-fh-0\" gradientUnits=\"objectBoundingBox\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#f0f5fe\"/><stop offset=\"0.54\" stop-color=\"#ffffff\"/></linearGradient></defs><rect x=\"0\" y=\"0\" width=\"800\" height=\"480\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><rect x=\"0\" y=\"0\" width=\"800\" height=\"60\" fill=\"url(#sq-a7c9141e26bd-fh-0)\" class=\"sq-brand-band\"/><rect x=\"0\" y=\"60\" width=\"800\" height=\"420\" fill=\"#f8fafd\" class=\"sq-plot\" data-sq-role=\"plot\"/><line x1=\"0\" y1=\"60\" x2=\"800\" y2=\"60\" stroke=\"#c9d1df\" stroke-width=\"1\" class=\"sq-card-frame\"/><text x=\"12\" y=\"16\" font-size=\"10\" text-anchor=\"start\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"600\" letter-spacing=\"1.2\" textLength=\"36\" lengthAdjust=\"spacing\" fill=\"#2563eb\" class=\"sq-caption\" data-sq-role=\"caption\">GAUGE</text><rect x=\"0.5\" y=\"0.5\" width=\"799\" height=\"479\" fill=\"none\" stroke=\"#c9d1df\" stroke-width=\"1\" class=\"sq-card-frame\"/><rect x=\"97.36\" y=\"261.56\" width=\"605.28\" height=\"28\" rx=\"14\" fill=\"#c9d1df\" class=\"sq-band\" data-sq-role=\"gauge-track\"/><rect x=\"97.36\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#cfe4fe\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"0\"/><rect x=\"147.8\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#b7d8fe\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"1\"/><rect x=\"198.24\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#9fcbfd\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"2\"/><rect x=\"248.68\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#84bafc\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"3\"/><rect x=\"299.12\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#67a4fa\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"4\"/><rect x=\"349.56\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#4a8df7\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"5\"/><rect x=\"400\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#3679f1\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"6\"/><rect x=\"450.44\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#2c68e7\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"7\"/><rect x=\"500.88\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#2257dd\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"8\"/><rect x=\"551.32\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#1c47c2\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"9\"/><rect x=\"601.76\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#1a3a96\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"10\"/><rect x=\"652.2\" y=\"261.56\" width=\"50.44\" height=\"28\" rx=\"14\" fill=\"#182c6a\" class=\"sq-band\" data-sq-role=\"gauge-range\" data-sq-series-index=\"11\"/><line x1=\"702.64\" y1=\"254.56\" x2=\"702.64\" y2=\"296.56\" stroke=\"#182c6a\" stroke-width=\"4\" class=\"sq-mark\" data-sq-role=\"gauge-value\" data-sq-target-key=\"t-gauge-d2b8fd6396d81a73\" data-sq-emphasis=\"focus\" data-sq-meaning=\"warning\"/><rect x=\"697.64\" y=\"270.56\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#c45412\" class=\"sq-mark\" data-sq-role=\"gauge-overflow\" data-sq-meaning=\"warning\"/><text x=\"183.829\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">14.29</text><text x=\"270.297\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">28.57</text><text x=\"356.766\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">42.86</text><text x=\"443.234\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">57.14</text><text x=\"529.703\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">71.43</text><text x=\"616.171\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"31\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-tick-label\" data-sq-role=\"gauge-tick-label\">85.71</text><text x=\"97.36\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"25\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-bound-label\">0.00</text><text x=\"702.64\" y=\"309.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"37\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-bound-label\">100.00</text><text x=\"400\" y=\"245.56\" font-size=\"10\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"500\" textLength=\"73\" lengthAdjust=\"spacing\" fill=\"#667085\" class=\"sq-label\" data-sq-role=\"gauge-status-label\">Out of range</text><text x=\"400\" y=\"323.56\" font-size=\"16\" text-anchor=\"middle\" font-family=\"'Squillify Mono', 'IBM Plex Mono', monospace\" font-weight=\"600\" textLength=\"59\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-value-label\" data-sq-role=\"value-label\">112.50</text></svg>",
"width": 800,
"renderSummary": {
"skill": "chart.gauge",
"variant": "linear",
"colorScale": "sequential",
"colorScaleReversed": false,
"markCount": 15
},
"gaugeResult": {
"value": "112.5",
"normalized": "1.125",
"min": "0",
"status": {
"id": "outOfRange",
"label": "Out of range",
"meaning": "warning"
},
"max": "100",
"overflow": {
"amount": "12.5",
"direction": "aboveMax"
}
}
}Recommended use cases
- Show one value inside a bounded scale
- Compare one observed value with a target
- Communicate threshold-derived status
Avoid for
- Repeated completion items (use chart.progress_bar)
- Unbounded telemetry streams
- Qualitative status without a scale
Related skills
Composable with
Safety & privacy
- Runs without calling any external service.
- Your payloads are never stored permanently.
- Telemetry captures metadata only — never your payload contents.
- We never train models on your payloads.
- No human reviews your payloads.