用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JetBrains/ij-perf-report-aggregator --skill add-dashboard-page命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Evaluate and ship a ClickHouse version update — restore-compat check, dashboard-query benchmark against prod version, evaluation record, prod rollout
Add a new top-level dashboard category with database mapping, tests page, and empty dashboard
正在显示 SKILL.md
基于 SOC 职业分类
| name | add-dashboard-page |
| description | Add a new page (tab) to an existing dashboard category |
Add a new page to the existing $0 category. Page type: $1. Label: $2.
All changes go in dashboard/new-dashboard/src/routes.ts and optionally a new Vue component.
In the ROUTES enum, add a new entry using the category's ROUTE_PREFIX:
MyCategoryNewPage = `${ROUTE_PREFIX.MyCategory}/newPage`,
Find the existing Product const for the category and add a tab(url, label) entry to its tabs array:
tab(ROUTES.MyCategoryNewPage, "New Page"),
Use existing label constants when applicable: TESTS_LABEL, DASHBOARD_LABEL, STARTUP_LABEL, PRODUCT_METRICS_LABEL, COMPARE_BUILDS_LABEL, COMPARE_BRANCHES_LABEL, COMPARE_MODES_LABEL.
Add a new entry to the category's existing routes array using the route-builder helpers (defined near the top of routes.ts).
For a Tests page (uses the shared PerformanceTests.vue component via perfTests(path, props, pageTitle)):
perfTests(
ROUTES.MyCategoryNewPage,
{ dbName: "<dbName>", table: "<table>", initialMachine: MACHINES.HETZNER, withInstaller: false },
"My Category Performance tests"
),
props is typed as PerformanceTestsProps (dbName, table, initialMachine, and optional withInstaller, unit, releaseConfigurator, branch, withoutAccidents, machineGroupFilter). The satisfies TypedRouteRecord<PerformanceTestsProps> annotation lives inside the helper.
For a Dashboard page (custom Vue component via dashboard(path, component, pageTitle, props?)):
dashboard(ROUTES.MyCategoryNewPage, () => import("./components/myCategory/NewPageDashboard.vue"), "My Category New Page"),
For a Startup dashboard (startupDashboard(path, { table, defaultProject? }, pageTitle)):
startupDashboard(ROUTES.MyCategoryStartup, { table: "<table>", defaultProject: "<project>" }, "My Category Startup dashboard"),
For a Compare Builds page (compareBuilds(path, { dbName, table }, pageTitle?)):
compareBuilds(ROUTES.MyCategoryCompare, { dbName: "<dbName>", table: "<table>" }),
For a Compare Branches page (compareBranches(path, { dbName, table, metricsNames? }, pageTitle?)):
compareBranches(ROUTES.MyCategoryCompareBranches, { dbName: "<dbName>", table: "<table>" }),
For a Compare Modes page (compareModes(path, { dbName, table }, pageTitle?)):
compareModes(ROUTES.MyCategoryCompareModes, { dbName: "<dbName>", table: "<table>" }),
The pageTitle argument of the three compare helpers defaults to the standard label (Compare Builds / Compare Branches / Compare Modes), so pass it only to override.
Only needed for custom dashboard pages (not for Tests/Compare/Startup pages, which use shared components).
Create dashboard/new-dashboard/src/components/<category>/NewPageDashboard.vue:
<template>
<DashboardPage
db-name="<dbName>"
table="<table>"
persistent-id="<category>_<page>_dashboard"
initial-machine="linux-blade-hetzner"
:with-installer="false"
/>
</template>
<script setup lang="ts">
import DashboardPage from "../common/DashboardPage.vue"
</script>
KotlinNotebooksTests/kotlinNotebooks/testsTEST_ROUTE, DEV_TEST_ROUTE, DASHBOARD_ROUTE, STARTUP_ROUTE, PRODUCT_METRICS_ROUTE, COMPARE_ROUTE, COMPARE_BRANCHES_ROUTE, COMPARE_MODES_ROUTE) when the page type matchestab(url, label); build routes with the perfTests / dashboard / startupDashboard / compareBuilds / compareBranches / compareModes helpersMACHINES.HETZNER / MACHINES.AWS_LINUX instead of raw stringssatisfies TypedRouteRecord<...> for special cases the helpers don't cover (e.g. the PerformanceUnitTests.vue component, or a :subproject? path param)