jupyterlab/plugin-playground/plugin-authoring

Claude Code and agent skill by jupyterlab/plugin-playground

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Bootstrap and iterate TypeScript/TSX JupyterLab plugins in Plugin Playground for plugin development, using command-driven workflows and extension references.

Install

npx vskill@latest install jupyterlab/plugin-playground/plugin-authoring

SKILL.md

Plugin Authoring Skill (Playground)

Use this skill to bootstrap and iterate JupyterLab plugins inside Plugin Playground.

Goal

Produce working plugin code that can be loaded with plugin-playground:load-as-extension, using extension points and examples available in the running environment.

Inputs

  • Desired behavior (what the plugin should do)
  • Optional UI target (command palette, sidebar, status bar, notebook, etc.)
  • Optional package constraints (JupyterLab-only APIs vs external AMD modules)

Workflow

  1. Prepare a TypeScript file
  • If the user does not already have a plugin file open or specified, run plugin-playground:create-new-plugin with a meaningful path argument (for example app.commands.execute('plugin-playground:create-new-plugin', { path: 'status-indicator.ts' })) instead of relying on untitled defaults.
  • Start from the generated TypeScript scaffold and adapt it.
  • Plugin Playground supports schema-backed settings during prototyping (package.json with jupyterlab.schemaDir, with plugin.json fallback for single-plugin cases).
  • For any plugin with multiple files, settings schema, CSS, SVG, or other local assets, create a package root up front (for example my-extension/src/index.ts) and include a minimal package.json in my-extension/ so Share Package and extension export operate on the full folder.
  • When creating nested files through AI file commands, create the parent directories first and verify the files appear in the file browser before continuing.
  • Focus on TypeScript/TSX plugin code. Do not scaffold Python projects (pyproject.toml, Python package layout) unless explicitly requested.

Minimal package metadata for Playground prototypes:

json
{
"name": "my-extension",
"version": "0.1.0",
"jupyterlab": {
"extension": true,
"schemaDir": "schema"
}
}
  1. Discover available extension points
  • Run plugin-playground:list-tokens to get available tokens.
  • Run plugin-playground:list-commands to get available commands.
  • Use optional query argument to narrow results:
  • app.commands.execute('plugin-playground:list-tokens', { query: 'status' })
  • app.commands.execute('plugin-playground:list-commands', { query: 'notebook' })
  1. Discover reference examples
  • Run plugin-playground:list-extension-examples.
  • Filter by topic with query (for example toolbar, commands, widget, notebook).
  • Open selected example source/README from the sidebar for implementation details.
  1. Implement plugin code
  • Start from a minimal plugin shape (id, autoStart, activate).
  • Add requires tokens only after confirming availability from step 2.
  • Add commands with stable, unique IDs (<namespace>:<action>).
  • Do not overwrite or reuse built-in JupyterLab command IDs. Plugin Playground skips duplicate command registrations; register a separate command and add it to the relevant palette, menu, toolbar, launcher, or cell toolbar instead.
  • Use one or more .ts/.tsx files as needed as complexity grows.
  1. Load and iterate
  • Run plugin-playground:load-as-extension.
  • Validate behavior in UI.
  • Check the command return value for ok/status/message to detect and report loading or autostart errors.
  • If reloading the same plugin ID repeatedly, ensure cleanup is handled via deactivate() where needed.
  1. Export for standalone development
  • Run plugin-playground:export-as-extension to download a zip for local IDE + git workflows.
  • For deterministic automation (or when another file is focused), pass an explicit file path:
  • app.commands.execute('plugin-playground:export-as-extension', { path: 'my-extension/src/index.ts' })
  • Read export result metadata (ok, archiveName, rootPath, fileCount, message) and report failures.
  1. Share a file link for collaboration
  • Run plugin-playground:share-via-link to create a shareable URL for a single file.
  • It can target the active file or an explicit path:
  • app.commands.execute('plugin-playground:share-via-link', { path: 'my-extension/src/index.ts' })
  • The command keeps the same flow: it copies the generated link to clipboard and also returns metadata (ok, link, sourcePath, urlLength, message).
  1. Imports and module safety
  • Prefer JupyterLab/Lumino imports first.
  • For external packages, ensure AMD-compatible import targets are used.
  • Avoid Node/Webpack-only modules that are not AMD-compatible.

Output expectations

  • TypeScript-first plugin implementation (.ts/.tsx)
  • Clear command IDs and labels
  • Minimal required tokens
  • No unused imports

References

  • JupyterLab Extension Tutorial:
  • https://jupyterlab.readthedocs.io/en/stable/extension/extension_tutorial.html
  • JupyterLab Extension Examples:
  • https://github.com/jupyterlab/extension-examples

Security

  • Security scanPassed, 93 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
60
Repository forks
21
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jupyterlab/plugin-playground/plugin-authoring/badge)](https://verified-skill.com/skills/jupyterlab/plugin-playground/plugin-authoring)

Something wrong with this skill or its page? Tell us.