一键导入
browse-tables
Work on cluster/namespace views, browse/catalog surfaces, shared GridTable behavior, large datasets, filters, and refresh-backed table tests
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Work on cluster/namespace views, browse/catalog surfaces, shared GridTable behavior, large datasets, filters, and refresh-backed table tests
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use when wanting to systematically improve the React/TypeScript frontend - scans for security vulnerabilities, stability risks, performance issues, and code simplification opportunities, then presents 5 ranked findings for the user to choose from
Add support for a Kubernetes resource type by choosing the required catalog, refresh, detail, object-map, permission, frontend, docs, and test surfaces
Guide for safely modifying the refresh/streaming subsystem — covers the full domain lifecycle, registration points, and known fragility areas
Use when eliminating representable-but-invalid states in Luxury Yacht — converting boolean flag-soup to discriminated unions, making required identity fields non-optional, replacing stringly-typed states with literal/typed enums, and pushing scattered runtime guards into the type system or a single chokepoint. Triggers — "make impossible states impossible", flag soup (isLoading/isError/isEmpty), contradictory nullable fields, kind-only/name-only object refs, stringly-typed status, or the docs/todo.md item of the same name.
Work on Luxury Yacht object-panel details, YAML, actions, logs, shell/debug tabs, docked panels, related objects, and tests
Use for large-scale structural Luxury Yacht app reviews that audit broad systems or cross-cutting concerns, identify major simplification, hardening, optimization, or refactoring opportunities, and optionally write temporary phased plans in docs/plans
基于 SOC 职业分类
| name | browse-tables |
| description | Work on cluster/namespace views, browse/catalog surfaces, shared GridTable behavior, large datasets, filters, and refresh-backed table tests |
Use this when touching cluster or namespace resource views, Browse/catalog UI,
shared GridTable, table columns, filters, pagination/load-more, row identity,
large-data behavior, or refresh-backed list/table tests.
Read:
AGENTS.mdbackend/AGENTS.md for snapshot/catalog changesfrontend/AGENTS.md for table/view changesdocs/architecture/catalog.mddocs/architecture/refresh-system.mddocs/architecture/data-access.mddocs/frontend/gridtable.mddocs/architecture/large-data.mddocs/frontend/live-age.md when age columns or catalog-backed age display changesdocs/architecture/resource-metrics.md when CPU/memory/pod utilization columns changebackend/objectcatalogbackend/refresh/snapshot/catalog.gobackend/refresh/snapshot/*.gobackend/refresh/system/registrations.gobackend/refresh/resourcestreamThe object catalog owns discovery, existence, namespace listings, cluster listings, and canonical identity. Typed refresh snapshots may add richer row data, but they must preserve catalog-shaped identity.
frontend/src/modules/browsefrontend/src/modules/clusterfrontend/src/modules/namespacefrontend/src/core/data-accessfrontend/src/core/refreshfrontend/src/core/refresh/streaming/resourceStreamDomains.tsfrontend/src/shared/components/tablesUse GridTable and shared column factories. Frontend reads should flow through
dataAccess or the refresh orchestrator, not direct fetch calls.
Classify the task before proposing or editing:
GridTable, resource-grid adapters, shared
filtering/sorting/pagination, persistence, row identity, or column factories.
Inventory all affected adapters/usages before editing.For tier 2 and 3 work, create or update an explicit artifact before
implementation. Use docs/plans/<topic>.md for active work; move durable rules
to docs/frontend/gridtable.md or docs/architecture/large-data.md when the
plan is complete. If an artifact is not needed for a narrow edit, say why in
the final response.
For app-wide large-table work, classification is not completion. A table is complete only when it is query-backed, proven Local Complete by a real bound, or visibly Local Partial with matching counts, filters, export, selection, and object-action limits.
Resource inventory tables render through one controller — ResourceInventoryTable
fed by boundedRowsSource (bounded local) or backendQuerySource (backend
query). New resource tables start there; do not render GridTable directly and do
not add a third source shape. See the Resource Inventory Tables section of
docs/frontend/gridtable.md.
Inventory these entry points:
<ResourceInventoryTable render sites and the source each is givenboundedRowsSource / backendQuerySource callersuseQueryBackedClusterResourceGridTable / useQueryBackedNamespaceResourceGridTableuseClusterResourceGridTableuseNamespaceResourceGridTableuseObjectPanelResourceGridTableuseQueryResourceGridTable<GridTable render sites (must be a classified non-resource exception)useTableSortFor each production usage, record:
Local CompleteLocal PartialQuery Backed StaticQuery Backed DynamicTreat these cases as separate design problems:
Local Complete: the frontend has the complete bounded row set. Local
sort/search/filter/facets are allowed. The bound must come from the domain shape
or backend contract, not from a user-tunable row cap.
Local Partial: the frontend has a capped, recent, degraded, or sampled window.
Local sort/search/filter are allowed only over that window. UI, export, counts,
facets, and select-all must not imply global behavior.
Query Backed Static: backend owns global search, filter, sort, facets, totals,
pagination/windowing, export-all, and non-mutating query-wide selection for
stable projected fields. Frontend renders only the current page/window.
Query Backed Dynamic: backend owns the same behavior as Query Backed Static,
but sort/filter depends on changing computed state such as metrics. Cursor and
result metadata must include both the base resource revision and the dynamic
input revision.
If a table is Local Partial, the UI must make partial, capped, recent, or
degraded state visible and must not imply global counts, facets, sorting, or
export semantics.
If a table is Local Complete, verify the bound at the producer or with
measured fixtures. Do not use a user-facing row cap as proof that the dataset is
complete.
If a table is Query Backed Dynamic, backend cursor/snapshot identity must
include both the base resource snapshot/revision and the dynamic input revision
such as metrics. Do not sort dynamic fields locally for a global table.
Before finishing broad table architecture work, add or update an enforcement
mechanism so new production GridTable usages cannot bypass mode
classification.
Pods, Workloads, Nodes, and embedded Object Panel pod tables must keep object/status data and metric data on separate refresh paths:
docs/architecture/large-data.md.frontend/src/core/resource-metrics for metric selectors, value adapters,
and table overlays. Do not add a parallel metrics cache under
resource-grid or feature components.Age columns stay outside this path: render absolute timestamps through
LiveAgeText or shared age columns, and test that relative age advances without
base or metric refetches when changing age behavior.
Before changing table data ownership, sort/filter semantics, caps, refresh domains, or query contracts, trace the producer:
truncated, total, or
warningsclusterId, group, version, kind, namespace, and
nameIf producer completeness, truncation, identity, or dynamic-state ordering is unclear, stop and inspect the producer instead of implementing a local table workaround.
For any table change that affects row sets, filters, search, sort, or pagination, explicitly check:
clusterId, GVK, namespace,
and nameGridTable
inventory and mode classification.age strings only as fallback text.-Inf, never a string fallback), so cursor paging
cannot skip or duplicate rows. See docs/architecture/large-data.md.GridTable and shared column factories.mage qc:prerelease.Use focused checks while iterating:
go test ./backend/objectcatalog ./backend/refresh/snapshot ./backend/refresh/system
npm run typecheck --prefix frontend
npm run test --prefix frontend -- browse tables cluster namespace
For broad shared-table changes, also run mage qc:knip, then
mage qc:prerelease for non-documentation changes.
For tier 2 or 3 table-mode work, validation must include a contract/static test
or equivalent check that detects new production GridTable usage without mode
classification.