Use when creating, modifying, debugging, deploying, or testing Redis Insight Workbench visualization plugins, plugin manifests, package.json visualizations, activationMethod functions, redisinsight-plugin-sdk usage, Parcel/Vite plugin builds, iframe rendering, Redis command parsing, Docker RedisInsight deployment, /api/plugins verification, or Playwright plugin validation.
72
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Build, deploy, and validate Redis Insight Workbench visualization plugins. Plugins render inside an iframe in Workbench and visualize the result of a Redis command. Trigger this skill for plugin manifests, package.json visualizations, activationMethod functions, redisinsight-plugin-sdk usage, Parcel/Vite plugin builds, iframe rendering, Redis command parsing, Docker RedisInsight deployment, /api/plugins verification, and Playwright plugin tests.
Use the redis-ui-components skill for every visual plugin UI. RedisInsight plugins use the RedisInsight product theme pair: light / dark, not light2 / dark2.
Official source-of-truth references:
See references/official-docs-summary.md for a condensed summary.
You are inside the RedisInsight repo. An internal plugin lives in the
redisinsight/ui/tree, so its code must follow the same styleguides as the rest of the UI — not ad hoc plugin code. These rules are mandatory for any plugin code written here and override generic external-plugin guidance below where they conflict:
- frontend — component folder structure (
ComponentName/ComponentName.tsx+.styles.ts+.types.ts+.spec.tsx), functional components with hooks, named exports, barrel files, layout components (Row/Col/FlexGroup) instead of rawdiv, and theme usage.- redis-ui-components — build all plugin UI from Redis UI components. Import the internal
uiSrc/components/uiwrappers; never import raw@redis-ui/*. (This skill is a symlink into the installed@redis-ui/componentspackage, so it resolves afternpm install; if it is missing, run install — the canonical source isnode_modules/@redis-ui/components/skills/redis-ui-components/.)- code-quality — TypeScript everywhere (no
any), naming (PascalCase/camelCase/UPPER_SNAKE_CASE), import order, no magic numbers, no!importantin styles, semantic theme colors over CSS variables.- testing — Jest + Testing Library, the
renderComponenthelper,fakerfor test data,waitForinstead of fixed time waits.- e2e-testing — any Playwright/E2E test follows this skill (tests in
tests/e2e-playwright/, page objects, fixtures, UI navigation; neverpage.goto()directly, no CSS selectors or fixed waits).External standalone plugins (below) are bundled in isolation and cannot import these internals; they emulate the conventions with local code instead.
Decide before scaffolding anything else.
redisinsight/ui/src/packages/<plugin-name>/ and ships with Redis Insight itself. Build with Vite (shared config). Follow the repo styleguides above. This is the default for any contribution to this repo — copy a sibling package such as geodata or redisearch rather than diverging.~/.redis-insight/plugins/<name>/. Build with Parcel. Bundle all dependencies. Do not import from uiSrc/ or any RedisInsight monorepo internal. Use this only for customer/field/demo plugins that ship outside this repo.See references/internal-vite-plugin.md and references/external-parcel-plugin.md.
<plugin-name>/
package.json # manifest + build scripts
src/
index.html # iframe entry, has #app
main.tsx # activation functions, default export
components/
styles/
styles.scss
dist/
index.js # built bundle (referenced by manifest "main")
styles.css # built styles (referenced by manifest "styles")Top-level package.json fields:
nameversiondescriptionmain — path to built JS (e.g. ./dist/index.js).styles — path to built CSS (e.g. ./dist/styles.css).visualizations — array of visualization descriptors.Each visualization descriptor must include:
idnameactivationMethodmatchCommandsdescriptiondefaultSet default: false unless the user explicitly asks for it to be the default visualization.
The activationMethod value must exactly match an exported function name in the bundle. The plugin entry must export that function via the default export:
export default { renderMyView };Multiple visualizations:
export default {
renderTableView,
renderChartView,
};See references/plugin-manifest.md for full examples and how to strip dev-only fields from the deployed manifest.
Every activation function must:
const root = document.getElementById('app');command, data, modules, theme).try/catch and render an error state on failure.data is missing or empty.[MY_PLUGIN], never bare console.log.See references/error-handling.md.
Every plugin UI must follow RedisInsight product styling:
uiSrc/components/ui wrappers, following the frontend styleguide.light / dark product themes.@redis-ui/*.theme_LIGHT / theme_DARK body classes or SDK theme helpers.See references/redisinsight-product-ui.md and use templates/external-styles.scss as the baseline src/styles/styles.scss.
Build every new plugin in three phases. Do not skip phases — the failure mode in each phase tells you exactly what is wrong.
command, status, and the raw response.See references/iterative-development.md and the templates in templates/.
Before asking for review, run a small adversarial pass against the exact surfaces the plugin touches:
See references/review-hardening.md.
npm run build
test -f dist/index.js
test -f dist/styles.css # if "styles" is declared
grep -c "process.env" dist/index.js # must be 0 in a Parcel buildConfirm each activationMethod name appears in the bundle:
grep -o "renderMyView" dist/index.js | headExternal plugin → user plugins folder:
mkdir -p ~/.redis-insight/plugins/<plugin-name>
cp package.json ~/.redis-insight/plugins/<plugin-name>/
cp -R dist ~/.redis-insight/plugins/<plugin-name>/distRestart Redis Insight, then verify:
curl -s http://localhost:5540/api/pluginsThe response must include the plugin name and its visualizations. See references/testing-and-deployment.md for Docker workarounds, Playwright smoke tests, and the static-plugin path inside the Docker image.
HGETALL, LRANGE, XRANGE, INFO, FT.SEARCH). Never run destructive commands (FLUSHDB, DEL, UNLINK, XTRIM, CLUSTER RESET, CONFIG SET) without explicit user request and confirmation.index.js / styles.css at the plugin root. They live in dist/ and the manifest points at ./dist/....default: true on a visualization unless the user asked for it.scripts or devDependencies in the deployed manifest. Strip them before copying.uiSrc/, @redis-ui/*, or any RedisInsight monorepo internal in a standalone plugin.light2 / dark2 for RedisInsight plugins; those are for other Redis product UIs./api/plugins verification after deploying.process.env.* references in the bundle. Replace at build time.WITH... modifier), return very different structures. See references/redis-command-parsing.md.package.json declares main, styles, and visualizations with required fields.activationMethod matches a default-exported function.redis-ui-components skill (internal plugins) or emulated locally (external plugins), with light / dark theme handling.dist/index.js, dist/styles.css, no process.env.~/.redis-insight/plugins/<name>/ (or via the Docker workaround).curl http://localhost:5540/api/plugins lists the plugin.| File | Load When |
|---|---|
| official-docs-summary.md | Need the canonical contract from Redis Insight docs. |
| redis-insight-plugin-guidelines.md | Need the long-form operational reference. |
| external-parcel-plugin.md | Building a standalone plugin with Parcel. |
| internal-vite-plugin.md | Building inside the RedisInsight monorepo with Vite. |
| plugin-manifest.md | Writing or stripping package.json manifests. |
| iterative-development.md | Phase 1/2/3 templates and pipeline. |
| redisinsight-product-ui.md | Applying RedisInsight product UI inside plugin iframes. |
| review-hardening.md | Pre-review checklist for matcher, parser, visualization state, and scoped regression tests. |
| testing-and-deployment.md | Deploy paths, Docker workaround, /api/plugins, Playwright. |
| redis-command-parsing.md | Parsing raw Redis command responses defensively. |
| third-party-libraries.md | Integrating a visualization library, custom .d.ts, bundle size. |
| error-handling.md | Defensive render, ErrorBoundary, log prefixes. |
6029714
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.