redis/redis-insight-plugin
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.
npx skills add https://github.com/redis/RedisInsight --skill redis-insight-plugin
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 raw div, and theme usage.
> - redis-ui-components — build all plugin UI from Redis UI
> components. Import the internal uiSrc/components/ui wrappers; never import raw
> @redis-ui/*. (This skill is a symlink into the installed @redis-ui/components package,
> so it resolves after npm install; if it is missing, run install — the canonical source is
> node_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
> !important in styles, semantic theme colors over CSS variables.
> - testing — Jest + Testing Library, the renderComponent helper,
> faker for test data, waitFor instead of fixed time waits.
> - e2e-testing — any Playwright/E2E test follows this skill
> (tests in tests/e2e-playwright/, page objects, fixtures, UI navigation; never page.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 build
Confirm each activationMethod name appears in the bundle:
grep -o "renderMyView" dist/index.js | head
External 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>/dist
Restart Redis Insight, then verify:
curl -s http://localhost:5540/api/plugins
The 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. |
Take redis/redis-insight-plugin from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.