High-level orchestrator for managing multi-pass migration of Chrome DevTools legacy components to the modern UI engineering vision (UI.Widget & Lit-html).
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/ui-eng-vision-orchestrator/SKILL.mdThis meta-skill acts as the central coordinator for modernizing legacy Chrome
DevTools views into declarative UI.Widget components based on lit-html,
managing a multi-pass sequential CL pipeline to ensure each code modification is
small, testable, and highly reviewable.
Refer to ui_engineering.md for general principles.
migration_plan.md listing
the exact transformations, file targets, and subskills allocated for each
pass..element or .contentElement couplings. If found,
include the decoupling of these references in the plan.DOMStorageItemsView.ts or
KeyValueStorageItemsView.ts for storage-like components) to find proven
patterns for toolbar and data-grid configurations.legacy_test_runner & blink/web_tests):
Before converting TypeScript private fields/methods to ES #private or
removing widget properties (e.g., .tabbedPane, .sidebarPaneStack,
.threadsSidebarPane, .searchInputElement), search both
front_end/legacy_test_runner/**/*.js and Chromium's
third_party/blink/web_tests/http/tests/devtools/**/*.js (which run on
dtf_linux_rel CQ via blink_web_tests and reflectively access private
members in untyped JS). Keep accessed members as TypeScript private with a
// Accessed in web_tests / legacy_test_runner comment, or migrate the
web_tests first in a dedicated CL.QuickSourceView) into their own dedicated CLs.ui/legacy or component
infrastructure changes (e.g., bindToAction, SplitWidget,
WrapperWidget) in separate, preceding CLs. Always verify with
cog_api.py diff before uploading that no changes from later commits
leaked into earlier infrastructure CLs.ReportView, ToolbarButton, DataGrid, TreeOutline), and
actual class inheritance. Deconstruct the file mentally (or in the plan)
into Business Logic (state, event handlers) and Rendering Logic
(DOM creation, CSS classes). Reference code elements by Name (not
line numbers) to ensure the plan remains valid as the codebase evolves.
Check if the class dependencies have been migrated to the ui eng vision
or not. If the file contains multiple classes, plan the migration
separately for each class, starting with the leaves and going up the
dependency chain.ViewInput
interface first provides a clean data contract, making the
subsequent template conversion highly deterministic.migration_plan.md using the Structured Plan Template below.The plan you generate MUST follow this structure:
# Migration Plan: [FileName.ts]
## 📊 Current State
- **Hybrid File**: [Yes/No]
- **Classes Found**: [ClassA, ClassB]
- **Strategy Selection**: [Option A (Logic First) | Option B (Tech First)]
## 🛠️ Passes Checklist
- [ ] **Pass 0: Baseline & Safety Scaffolding**
- Assigned to: `ui-eng-vision-test-scaffolder`
- [ ] **Pass 0.5: Privatize & Dead-Code Cleanup**
- Mechanical prefactor: convert TypeScript `private` to ES `#private` and remove dead code
- [ ] **Pass 1: Logic Consolidation**
- Assigned to: `ui-eng-vision-logic-consolidator`
- [ ] **Pass 2: Lit-HTML Rendering**
- Assigned to: `ui-eng-vision-local-lit-renderer`
- [ ] **Pass 3: Widget Promotion**
- Assigned to: `ui-eng-vision-widget-promoter`ui-eng-vision-test-scaffolder (Delegate to a subagent to encapsulate verbose test logs)legacy_test_runner and blink_web_tests first.private fields/methods to ES #private (except those reflectively accessed by web tests).ui-eng-vision-logic-consolidator (Delegate to a subagent to maintain focus)ui-eng-vision-local-lit-renderer (Delegate to a subagent for isolated template generation)ui-eng-vision-widget-promoter (Delegate to a subagent for final architectural cleanup)UI.Widget classes, hook up
performUpdate() delegates, export the default view layout, and clean
up legacy wrappers.ChromeDevTools/devtools-frontend
82e99f9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.