chat-customizations-editor

Guides development and testing of the Chat Customizations management editor in VS-BRAX.

Updated Aug 20, 2026
One-click install
npx skills add https://github.com/basedgod55hjl/vsbrax --skill chat-customizations-editor-basedgod55hjl
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: chat-customizations-editor
Source: https://github.com/basedgod55hjl/vsbrax/tree/main/.github/skills/chat-customizations-editor
Command: npx skills add https://github.com/basedgod55hjl/vsbrax --skill chat-customizations-editor-basedgod55hjl

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @playwright/cli.

What problem does it solve? Working on the Chat Customizations editor requires navigating a declarative harness descriptor system, a five-layer extension API sync chain, and screenshot-based CI regression gates that are easy to break without deep context. ## Core Features & Use Cases - Harness Descriptor Guidance: Explains IHarnessDescriptor, ISectionOverride, and IStorageSourceFilter so UI widgets stay free of harness-specific conditionals. - Extension API Sync Chain: Maps the five layers (proposed .d.ts, IPC DTO, ExtHost, MainThread, internal interface) that must be updated together when adding fields to customization items. - Fixture & Screenshot Testing: Documents component fixture IDs per tab, mock service requirements, blocksCi CI gates, and scrollbar-stability waits for reliable screenshots. - Live Product Debugging: Provides Playwright CLI workflows for inspecting Monaco list layout issues that fixtures cannot reproduce. - Use Case: When adding a new field to IExternalCustomizationItem, follow the documented chain to update all five layers and verify both core and sessions registrations compile. ## Quick Start Ask the agent to add a new tab fixture to the Chat Customizations management editor and update the spec file accordingly.

Frequently Asked Questions about chat-customizations-editor

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

FAQPage Schema
How do I add a new field to the chat session customization extension API?▼

Adding a field to IExternalCustomizationItem requires updating five layers: the proposed .d.ts, the IPC DTO in extHost.protocol.ts, extHostChatAgents2.ts, mainThreadChatAgents2.ts, and customizationHarnessService.ts. New optional fields in the proposed API are backward-compatible and need no version bump.

How do I screenshot a specific tab of the customizations editor?▼

Use the component fixture IDs like chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTab/Dark with the screenshot tool. Each tab has Dark and Light variants generated by defineThemedFixtureGroup, and new tabs are added via the selectedSection render option.

Why does the Monaco list show zero rows in the real product but work in fixtures?▼

The list layout call bails out when offsetHeight returns 0 during a display:none to visible transition. Defer the layout call using requestAnimationFrame from the widget's window so the element has reflowed before measuring.

Why is built-in grouping not showing in my customization fixture?▼

Built-in regrouping requires three things: BUILTIN_STORAGE in the harness descriptor's visible sources, a mocked IProductService defaultChatAgent chatExtensionId, and mock items carrying matching extensionId provenance. Missing any one silently disables regrouping.

What causes screenshot instability in component fixtures?▼

Scrollbar fade transitions shift the scrollbar class about two seconds after programmatic scrolling, changing screenshots. Wait roughly 2400ms after any scroll action, or poll until the scrollbar loses its visible class, before resolving the fixture render.