# Custom Qlik Extensions

Source: /docs/raptor-mcp/custom-qlik-extensions

Agent workflow for turning Apache ECharts, D3, Chart.js, Picasso, Observable, or nebula-style visualization ideas into Qlik extension packages and sheet objects.

## What the workflow provides

Raptor MCP can guide an agent from a visualization source link to a Qlik-uploadable extension package, then publish that extension to Qlik Cloud or QSEoW and place it in a target app as a sheet object.

The workflow uses governed templates as rails. The agent adapts the source idea into reviewable extension assets instead of copying arbitrary remote scripts directly into the tenant.

- Review approved templates before generation.
- Package a generated scaffold into a validated extension ZIP.
- Publish the ZIP through Qlik Cloud Extensions REST or QSEoW QRS upload.
- Create an extension-backed sheet object with Qlik dimensions, measures, and properties.
- Verify with sheet and object inspection before reporting success.

## Agent flow

Start with the user prompt, source link, target app, target sheet, and intended fields. If the app or sheet is not explicit, confirm that before modifying a production app.

- Fetch the Apache ECharts, D3, Observable, GitHub, Chart.js, Picasso, or nebula source and summarize marks, scales, interactions, and data requirements.
- Select a suitable approved template for the requested visual pattern.
- Map Qlik fields and expressions using the target app and accepted data model.
- Package generated assets into a small, reviewable extension ZIP with external resources disabled unless approved.
- Publish the extension through the approved Qlik administration path.
- Verify the sheet object, data mapping, and extension manifest before reporting success.

## Safety gates

Generated extension packages should be small, reviewable, and self-contained. External scripts and CDNs require explicit CSP/admin review before use.

- Every package must include .qext, .js, .html, and .css files.
- Reject nested ZIPs, executables, shell scripts, installers, and disallowed MIME-style payloads.
- Stay under Qlik Cloud extension limits: 30 MB ZIP, 30 MB per file, 500 files, and 100 MB uncompressed total.
- Use stable names such as raptor-<slug> so updates and sheet objects can refer to the same extension type.
- Keep product templates generic. Generated chart-specific knowledge belongs in the extension's embedded raptor-extension.json manifest, not in the shipped product template catalog.

## Related Links

- [Template reference](/docs/raptor-mcp/extension-template-reference)
- [Qlik extensions REST API](https://qlik.dev/apis/rest/extensions/)
- [Qlik Cloud extension requirements](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-extensions.htm)