# 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 curated templates as rails. The agent adapts the source idea into local extension files instead of copying arbitrary remote scripts directly into the tenant.

- List and inspect packaged 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.
- Use list_extension_templates and get_extension_template to select a Raptor template.
- Map Qlik fields and expressions with get_available_fields, field_values_action, and existing object inspection.
- Use package_extension with generated file overrides and keep allow_external_resources false by default. Raptor embeds raptor-extension.json so the generated extension remains self-describing.
- Use publish_extension, then create_extension_object with the installed extension type.
- Verify with inspect_sheet, get_object_properties, and get_extension_manifest.

## 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)