add-ide-panel

Adds a new switchable panel to a Next.js web IDE shell with API route, registry, and state wiring.

10|1|Updated Jul 7, 2026
One-click install
npx skills add https://github.com/catalystctl/catcode --skill add-ide-panel-catalystctl
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: add-ide-panel
Source: https://github.com/catalystctl/catcode/tree/main/.catalyst-code/skills/add-ide-panel
Command: npx skills add https://github.com/catalystctl/catcode --skill add-ide-panel-catalystctl

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Adding a new panel to a VSCode-class web IDE shell requires touching many disconnected pieces — type unions, React components, authenticated API routes, a panel registry, state hooks, and security checks — and missing any one of them breaks the shell or leaks workspace files. ## Core Features & Use Cases - End-to-end panel scaffolding workflow: Guides adding the panel id to IdePanelId, creating the component in web/src/components/ide/, registering it in panel-registry.ts, and extending useIde() state. - Secure server API route pattern: Enforces getSession auth, workspace path confinement, and secret-file filtering (.env*, *.pem, *.key) mirroring api/files/route.ts. - WebSocket and verification guidance: Covers custom-server WebSocket upgrades for interactive panels and a typecheck plus puppeteer smoke test for the activity bar. - Use Case: You want to add a workspace-wide search panel to the IDE activity bar; follow the steps to wire the component, route, registry entry, and state slice without touching the chat AgentState contract. ## Quick Start Add a new search panel to the web IDE shell following the add-ide-panel steps, including its API route, registry entry, and security checklist.

Frequently Asked Questions about add-ide-panel

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new panel to a Next.js IDE activity bar?

Extend the IdePanelId type union, create the panel component in web/src/components/ide/, register a PanelDescriptor in panel-registry.ts, and add the id to PANEL_ORDER. The activity bar renders automatically from PANEL_ORDER, so no shell changes are needed.

How do I secure a workspace file API route in Next.js?

Require getSession and return 401 without it, then confine every path with normalize/join/relative helpers rejecting '..' traversal. Also filter secret filenames like .env*, *.pem, *.key, and credentials* so they are never exposed.

Can an IDE panel use a WebSocket in a Next.js app?

Next route handlers cannot serve WebSockets, so add the upgrade to the custom server in web/src/server/server.ts. Authenticate the upgrade with getSession, confine paths to the workspace, and prefer pure-JS child_process pipes over native modules like node-pty.

Why should heavy IDE panels use next/dynamic with ssr false?

Dynamic import with ssr:false keeps heavy dependencies out of the server render and the main client bundle. Light panels can remain static imports, but anything with large dependencies should load on demand.

When should IDE panel state avoid the agent reducer?

Panel layout and runtime state belongs in the useIde() hook, never in AgentState or reducer.ts. That reducer is the chat SSE snapshot contract, and modifying it breaks the agent communication protocol.