github TypeScript analyzed 91b6f5f deep scan · partial (614/7,011 files)

udecode/plate

github

Rich-text editor with AI and shadcn/ui

maintainer
udecode
licence
NOASSERTION
first seen
2026-05-22
last seen
2026-09-17
releases · 30d
6
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 91b6f5f · analyzer v33 · 2h ago

skills & prompt files 40

code evidence vv53.3.12 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 3371

filesystem 67

  • fs (weak) udecode-plate-91b6f5f/.agents/rules/sync-shadcn/scripts/build-dashboard.mjs :3 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/.agents/skills/autogoal/scripts/check-complete.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/.agents/skills/autogoal/scripts/create-goal-scratchpad.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/.agents/skills/autogoal/scripts/create-goal-template.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/.agents/skills/autogoal/scripts/init-templates.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/next.config.ts :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/build-docs-registry.mts :8 import { promises as fs } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/build-registry.mts :2 import { promises as fs } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/capture-registry.mts :1 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/check-docs-source-parity.mts :4 import { promises as fs } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/run-editor-perf.mts :1 import { mkdir, writeFile } from 'node:fs/promises';
  • fs (weak) udecode-plate-91b6f5f/apps/www/scripts/run-table-perf.mts :1 import { mkdir, writeFile } from 'node:fs/promises';
show 28 more
  • fs (weak) udecode-plate-91b6f5f/apps/www/src/__tests__/package-integration/docx-io.roundtrip.slow.tsx :3 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/apps/www/src/__tests__/package-integration/docx/readTestFile.ts :1 import fs from 'node:fs';
  • fs udecode-plate-91b6f5f/apps/www/src/lib/registry-changelog.ts :1 import fs from 'node:fs';
  • fs udecode-plate-91b6f5f/apps/www/src/lib/rehype-component.ts :3 import fs from 'node:fs';
  • fs udecode-plate-91b6f5f/apps/www/src/lib/rehype-utils.ts :4 import { promises as fs } from 'node:fs';
  • fs udecode-plate-91b6f5f/apps/www/src/registry/blocks/slate-to-html/page.tsx :4 import fs from 'node:fs/promises';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/benchmark-health.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/core-benchmark.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-editor-frameworks-research.mjs :3 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-source-pass-research.mjs :3 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/package-boundary-gates.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/render-perf-index.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/render-rich-text-viewer.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/rich-text-editors-benchmark.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/slate-v2-legacy-benchmark.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/startup-import.mjs :2 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/src/index.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/benchmarks/editor/test/fuzz/core-fuzz.mjs :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/packages/docx-io/src/lib/__tests__/testDocxImporter.tsx :3 import fs from 'node:fs';
  • fs udecode-plate-91b6f5f/packages/docx/src/lib/docx-cleaner/cleanDocx.slow.ts :1 import fs from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/packages/docx/src/lib/docx-cleaner/utils/getVShapes.spec.ts :1 import fs from 'node:fs';
  • fs udecode-plate-91b6f5f/packages/udecode/depset/src/index.slow.ts :3 import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
  • fs udecode-plate-91b6f5f/packages/udecode/depset/src/index.ts :4 import fs from 'node:fs/promises';
  • fs (weak) udecode-plate-91b6f5f/templates/plate-playground-template/.agents/skills/autogoal/scripts/check-complete.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/templates/plate-playground-template/.agents/skills/autogoal/scripts/create-goal-scratchpad.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/templates/plate-playground-template/.agents/skills/autogoal/scripts/create-goal-template.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/templates/plate-playground-template/.agents/skills/autogoal/scripts/init-templates.mjs :3 import { existsSync } from 'node:fs';
  • fs (weak) udecode-plate-91b6f5f/templates/plate-template/.agents/skills/autogoal/scripts/check-complete.mjs :3 import { existsSync } from 'node:fs';

27 more not shown — this panel samples each group; the count above is the real total.

shell / exec 25

  • shell (weak) udecode-plate-91b6f5f/.agents/rules/sync-shadcn/scripts/build-dashboard.mjs :4 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/apps/www/scripts/build-registry.mts :1 import { spawn } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-editor-frameworks-research.mjs :2 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-source-pass-research.mjs :2 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/package-boundary-gates.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/startup-import.mjs :1 import { spawnSync } from 'node:child_process';
  • shell udecode-plate-91b6f5f/packages/csv/src/lib/esmInterop.slow.ts :1 import { execFileSync } from 'node:child_process';
  • shell udecode-plate-91b6f5f/packages/plate-scripts/run-with-pkg-dir.cjs :7 const { spawnSync } = require('node:child_process');
  • shell udecode-plate-91b6f5f/packages/udecode/depset/src/index.slow.ts :2 import { spawnSync } from 'node:child_process';
  • shell udecode-plate-91b6f5f/packages/udecode/depset/src/index.ts :3 import { execSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/await-npm-publish.mjs :3 import { execFile } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/bench-targets.mjs :3 import { spawnSync } from 'node:child_process';
show 13 more
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/check-templates.integration.mjs :2 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/generate-ui-changelog-entries.mjs :6 import { execFileSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/prepare-local-template-packages.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/prepare-release-changesets.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/release-branch-prs.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/release-notes.mjs :3 import { execFileSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/release-packages.mjs :4 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/slate-autoresearch.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/sync-version-package-releases.mjs :3 import { execFile as execFileCallback } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/test-deferred.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/test-fast.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/test-slow.mjs :10 import { spawnSync } from 'node:child_process';
  • shell (weak) udecode-plate-91b6f5f/tooling/scripts/test-slowest.mjs :4 import { spawnSync } from 'node:child_process';

network 14

  • net udecode-plate-91b6f5f/apps/www/src/components/block-viewer.tsx :72 const response = await fetch(
  • net udecode-plate-91b6f5f/apps/www/src/hooks/use-lazy-sidebar-nav.ts :30 const promise = fetch(`/api/sidebar-nav?locale=${normalizedLocale}`)
  • net udecode-plate-91b6f5f/apps/www/src/lib/bundlephobia.ts :1 import fetch from 'node-fetch';
  • net udecode-plate-91b6f5f/apps/www/src/registry/components/editor/use-chat.ts :77 const res = await fetch(input, {
  • net (weak) udecode-plate-91b6f5f/apps/www/src/registry/examples/values/code-block-value.tsx :19 {' const response = await fetch(`/api/users/${userId}`);'}
  • net udecode-plate-91b6f5f/apps/www/src/registry/ui/export-toolbar-button.tsx :62 const response = await fetch(url);
  • net (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-editor-frameworks-research.mjs :109 const response = await fetch(source.url);
  • net (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/fetch-source-pass-research.mjs :109 const response = await fetch(source.url);
  • net (weak) udecode-plate-91b6f5f/benchmarks/editor/benchmarks/render-rich-text-viewer.mjs :422 fetch(${JSON.stringify(dataUrl)}, { cache: "no-store" })
  • net udecode-plate-91b6f5f/packages/ai/src/react/copilot/utils/callCompletionApi.ts :52 const res = await fetch(api, {
  • net udecode-plate-91b6f5f/packages/code-drawing/src/lib/utils/renderers.ts :40 const response = await fetch(svgUrl);
  • net udecode-plate-91b6f5f/packages/docx-io/src/lib/internal/utils/image-to-base64.ts :21 const response = await fetch(imageUrl);
show 2 more
  • net udecode-plate-91b6f5f/templates/plate-playground-template/src/components/editor/use-chat.ts :74 const res = await fetch(input, {
  • net udecode-plate-91b6f5f/templates/plate-playground-template/src/components/ui/export-toolbar-button.tsx :58 const response = await fetch(url);

secrets 1

  • secrets (weak) udecode-plate-91b6f5f/apps/www/src/registry/app/api/ai/credentials.spec.ts :24 const initialApiKey = process.env.AI_GATEWAY_API_KEY;

install hooks 4

  • postinstall udecode-plate-91b6f5f/apps/www/package.json :21 fumadocs-mdx
  • prepare udecode-plate-91b6f5f/package.json :80 bun x skiller@latest apply
  • prepare udecode-plate-91b6f5f/templates/plate-playground-template/package.json :11 bun x skiller@latest apply || true
  • prepare udecode-plate-91b6f5f/templates/plate-template/package.json :11 bun x skiller@latest apply || true

declared dependencies 79

  • @biomejs/biome@2.5.0
  • @changesets/cli@2.30.0
  • @changesets/get-github-info@0.8.0
  • @happy-dom/global-registrator@20.0.10
  • @hocuspocus/provider@3.4.4
  • @platejs/basic-nodes@workspace:^
  • @platejs/basic-styles@workspace:^
  • @platejs/code-block@workspace:^
  • @platejs/combobox@workspace:^
  • @platejs/docx@workspace:^
  • @platejs/indent@workspace:^
  • @platejs/juice@workspace:^
show 28 more
  • @platejs/link@workspace:^
  • @platejs/list@workspace:^
  • @platejs/list-classic@workspace:^
  • @platejs/markdown@workspace:^
  • @platejs/math@workspace:^
  • @platejs/media@workspace:^
  • @platejs/mention@workspace:^
  • @platejs/selection@workspace:^
  • @platejs/slate@workspace:^
  • @platejs/suggestion@workspace:^
  • @platejs/table@workspace:^
  • @platejs/test-utils@workspace:^
  • @playwright/test@1.53.0
  • @roarr/cli@5.12.4
  • @rollup/plugin-babel@6.1.0
  • @swc/core@1.12.0
  • @tailwindcss/postcss@4.1.8
  • @testing-library/dom@10.4.0
  • @testing-library/jest-dom@6.6.3
  • @testing-library/react@16.3.0
  • @testing-library/user-event@14.6.1
  • @types/bun@1.3.2
  • @types/is-hotkey@0.1.10
  • @types/jest@29.5.14
  • @types/lodash@4.17.17
  • @types/node@24.12.0
  • @types/prismjs@1.26.5
  • @types/prompts@2.4.9

39 more not shown — this panel samples each group; the count above is the real total.

obfuscation 16

  • dynamic require()/import() udecode-plate-91b6f5f/apps/www/scripts/build-registry.mts :76 const mod = await import("${componentPath}")
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/hooks/useAIChatEditor.slow.tsx :36 import(`./useAIChatEditor?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/hooks/useChatChunk.slow.tsx :19 import(`./useChatChunk?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/hooks/useEditorChat.slow.tsx :35 import(`./useEditorChat?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/utils/aiChatActions.slow.ts :64 import(`./acceptAISuggestions?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/utils/applyAISuggestions.spec.ts :57 import(`./applyAISuggestions?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/ai/src/react/ai-chat/utils/submitAIChat.slow.ts :39 import(`./submitAIChat?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/docx-io/src/lib/html-to-docx.spec.ts :17 import(`./html-to-docx?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/docx-io/src/lib/importDocx.spec.ts :17 import(`./importDocx?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/selection/src/react/hooks/useBlockSelectable.spec.tsx :18 import(`./useBlockSelectable?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/selection/src/react/hooks/useCursorOverlay.spec.tsx :40 import(`./useCursorOverlay?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/selection/src/react/hooks/useRefreshOnResize.spec.tsx :12 import(`./useRefreshOnResize?test=${Math.random().toString(36).slice(2)}`);
show 4 more
  • dynamic require()/import() udecode-plate-91b6f5f/packages/selection/src/react/hooks/useSelectionArea.slow.tsx :43 import(`./useSelectionArea?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/udecode/depset/src/utils/get-package-manager.spec.ts :10 import(`./get-package-manager?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/udecode/depset/src/utils/spinner.spec.ts :10 import(`./spinner?test=${Math.random().toString(36).slice(2)}`);
  • dynamic require()/import() udecode-plate-91b6f5f/packages/yjs/src/lib/providers/indexeddb-provider.spec.ts :82 const module = await import(`./indexeddb-provider?test=${importId++}`);