Skip to content

Add performance workflow and heap-snapshot-analysis skills#308834

Merged
roblourens merged 5 commits intomainfrom
roblou/perf-workflow-skills
Apr 9, 2026
Merged

Add performance workflow and heap-snapshot-analysis skills#308834
roblourens merged 5 commits intomainfrom
roblou/perf-workflow-skills

Conversation

@roblourens
Copy link
Copy Markdown
Member

Add two agent skills for driving memory/performance investigations:

vscode-performance-workflow

Drives repeatable VS Code scenarios, captures renderer heap snapshots, and provides bundled automation runners:

  • chat-memory-smoke.mts — Multi-turn chat smoke runner (prompts, responses, heap sampling, targeted snapshots)
  • chat-session-switch-smoke.mts — Creates multiple chat sessions and repeatedly switches between them
  • userDataProfile.mts — Utility for managing user-data profiles in smoke test runs

The skill documents the full workflow: define scenario → develop automation → fast smoke → targeted snapshots → verify → analyze → fix → document. Includes guidance on safety (real machine, not sandboxed), auth/profile management, agent-browser observation, and scratchpad organization.

heap-snapshot-analysis

Parses V8 heap snapshots, compares before/after, and traces retainer paths. Provides helper modules:

  • parseSnapshot.ts — Buffer-based streaming parser for large snapshots
  • compareSnapshots.ts — Diff two snapshots by constructor/object group
  • findRetainers.ts — Walk retainer paths to GC roots

Scratchpad convention

Both skills include gitignored scratchpad/ folders for one-off investigation scripts, organized in dated subfolders (YYYY-MM-DD-short-description/) with a findings.md documenting all ideas, decisions, and outcomes.

(Written by Copilot)

Add two agent skills for memory/performance investigations:

- vscode-performance-workflow: Drives repeatable VS Code scenarios,
  captures heap snapshots, and includes bundled chat smoke runners
  (chat-memory-smoke, chat-session-switch-smoke).
- heap-snapshot-analysis: Parses V8 heap snapshots, compares before/after,
  and traces retainer paths.

Both skills include scratchpad folders (gitignored) for one-off
investigation scripts organized in dated subfolders with findings.md.

(Written by Copilot)
Copilot AI review requested due to automatic review settings April 9, 2026 17:28
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds two new agent skills intended to support repeatable VS Code performance/memory investigations and V8 heap snapshot analysis, along with Playwright-based smoke runners and helper modules for snapshot parsing/diffing/retainer-path tracing.

Changes:

  • Introduces a “vscode-performance-workflow” skill with documented investigation workflow plus bundled automation runners (chat memory smoke + session switching) and a user-data profile utility.
  • Introduces a “heap-snapshot-analysis” skill with helpers to parse heap snapshots, compare before/after snapshots, and trace retainer paths, plus a scratchpad convention.
  • Adds a standalone scripts/chat-memory-smoke.mts runner at repo root.
Show a summary per file
File Description
scripts/chat-memory-smoke.mts Adds a repo-root Playwright+CDP chat memory smoke runner that collects heap metrics and optional heap snapshots.
.github/skills/vscode-performance-workflow/SKILL.md Documents the end-to-end performance workflow and how to use the bundled runners/scratchpad.
.github/skills/vscode-performance-workflow/scripts/chat-memory-smoke.mts Adds a skill-scoped chat memory smoke runner with shared persistent profile + seed-copy support.
.github/skills/vscode-performance-workflow/scripts/chat-session-switch-smoke.mts Adds a skill-scoped runner that creates multiple chat sessions and repeatedly switches between them while sampling heap.
.github/skills/vscode-performance-workflow/scripts/userDataProfile.mts Adds a utility to prepare/copy user-data profiles (including seed-copy with cache/log exclusions).
.github/skills/vscode-performance-workflow/scratchpad/README.md Documents scratchpad structure and usage tips for one-off investigations.
.github/skills/vscode-performance-workflow/scratchpad/.gitignore Git-ignores scratchpad contents while keeping README/.gitignore.
.github/skills/heap-snapshot-analysis/SKILL.md Documents snapshot analysis workflow and how to use helper modules.
.github/skills/heap-snapshot-analysis/helpers/parseSnapshot.ts Adds a heap snapshot parser and graph builder for traversal/retainer analysis.
.github/skills/heap-snapshot-analysis/helpers/compareSnapshots.ts Adds snapshot comparison (grouped by constructor) and console reporting helpers.
.github/skills/heap-snapshot-analysis/helpers/findRetainers.ts Adds direct-retainer and retainer-path search utilities.
.github/skills/heap-snapshot-analysis/scratchpad/README.md Documents scratchpad conventions and example imports for analysis scripts.
.github/skills/heap-snapshot-analysis/scratchpad/.gitignore Git-ignores scratchpad contents while keeping README/.gitignore.

Copilot's findings

  • Files reviewed: 13/13 changed files
  • Comments generated: 11

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 9, 2026

Screenshot Changes

Base: fff74269 Current: 729fe508

Changed (82)

chat/aiCustomizations/aiCustomizationManagementEditor/WelcomePage/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/WelcomePage/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/LocalHarness/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/CliHarness/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/LocalHarness/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/CliHarness/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/Sessions/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SessionsSkillsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SkillsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/InstructionsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/HooksTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/Sessions/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SessionsSkillsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/SkillsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/InstructionsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/HooksTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTab/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTab/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PromptsTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTabScrolled/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabNarrow/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTabNarrow/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/PluginsTabScrolled/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/McpServersTabNarrow/Dark
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTabNarrow/Dark
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Dark
Before After
before after
editor/inlineChatAffordance/InlineChatOverlay/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Dark
Before After
before after
editor/inlineCompletions/other/JumpToHint/Dark
Before After
before after
editor/inlineChatAffordance/InlineChatAffordance/Light
Before After
before after
editor/inlineChatAffordance/InlineChatOverlay/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Light
Before After
before after
editor/inlineCompletions/other/JumpToHint/Light
Before After
before after
editor/inlineCompletions/other/NextFileEditSuggestion/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Light
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Light
Before After
before after
editor/inlineCompletions/views/DeletionView/Light
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Light
Before After
before after
editor/inlineCompletions/other/NextFileEditSuggestion/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Dark
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/DeletionView/Dark
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Dark
Before After
before after
editor/suggestWidget/MethodCompletions/Dark
Before After
before after
editor/suggestWidget/MixedKinds/Dark
Before After
before after
peekReference/PeekReferences/Dark
Before After
before after
editor/suggestWidget/MethodCompletions/Light
Before After
before after
editor/suggestWidget/MixedKinds/Light
Before After
before after
peekReference/PeekReferences/Light
Before After
before after
agentSessionsViewer/ApprovalRowJson/Light
Before After
before after
agentSessionsViewer/ApprovalRowBash/Light
Before After
before after
agentSessionsViewer/ApprovalRowPowerShell/Light
Before After
before after
agentSessionsViewer/ApprovalRowJson/Dark
Before After
before after
agentSessionsViewer/ApprovalRowBash/Dark
Before After
before after
agentSessionsViewer/ApprovalRowPowerShell/Dark
Before After
before after
agentSessionsViewer/ApprovalRowLongLabel/Dark
Before After
before after
agentSessionsViewer/ApprovalRow1Line/Dark
Before After
before after
agentSessionsViewer/ApprovalRow2Lines/Dark
Before After
before after
agentSessionsViewer/ApprovalRow3Lines/Dark
Before After
before after
agentSessionsViewer/ApprovalRow4Lines/Dark
Before After
before after
agentSessionsViewer/ApprovalRow3LongLines/Dark
Before After
before after
agentSessionsViewer/ApprovalRowLongLabel/Light
Before After
before after
agentSessionsViewer/ApprovalRow1Line/Light
Before After
before after
agentSessionsViewer/ApprovalRow2Lines/Light
Before After
before after
agentSessionsViewer/ApprovalRow3Lines/Light
Before After
before after
agentSessionsViewer/ApprovalRow4Lines/Light
Before After
before after
agentSessionsViewer/ApprovalRow3LongLines/Light
Before After
before after

Added (8)

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageClassic/Light

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePagePromptLaunchers/Light

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageSelectorClassic/Light

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageSelectorPromptLaunchers/Light

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageClassic/Dark

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePagePromptLaunchers/Dark

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageSelectorClassic/Dark

current

chat/aiCustomizations/aiCustomizationWelcomePages/WelcomePageSelectorPromptLaunchers/Dark

current

Co-authored-by: Copilot <copilot@github.com>
Copy link
Copy Markdown

@salesmontiwa11-art salesmontiwa11-art left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Montiwa11

roblourens and others added 2 commits April 9, 2026 14:08
Co-authored-by: Copilot <copilot@github.com>
@roblourens roblourens marked this pull request as ready for review April 9, 2026 21:30
@roblourens roblourens enabled auto-merge (squash) April 9, 2026 21:31
@roblourens roblourens merged commit 6be8d6a into main Apr 9, 2026
26 checks passed
@roblourens roblourens deleted the roblou/perf-workflow-skills branch April 9, 2026 21:53
@vs-code-engineering vs-code-engineering bot added this to the 1.116.0 milestone Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants