원클릭으로
object-panel
Work on Luxury Yacht object-panel details, YAML, actions, logs, shell/debug tabs, docked panels, related objects, and tests
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Work on Luxury Yacht object-panel details, YAML, actions, logs, shell/debug tabs, docked panels, related objects, and tests
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
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.
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
Work on cluster/namespace views, browse/catalog surfaces, shared GridTable behavior, large datasets, filters, and refresh-backed table tests
| name | object-panel |
| description | Work on Luxury Yacht object-panel details, YAML, actions, logs, shell/debug tabs, docked panels, related objects, and tests |
Use this when touching object detail panels, overview/detail tabs, YAML read/apply/edit flows, related objects, logs, shell/debug tabs, Helm content, object actions, panel docking, or object-panel tests.
Read:
AGENTS.mdbackend/AGENTS.md for backend detail/action changesfrontend/AGENTS.md for frontend panel changesdocs/frontend/dockable-panels.mddocs/frontend/yaml-editor.md for YAML editor surfacesdocs/architecture/shared-resource-model.md for identity, status, links,
facts, or lifecycledocs/architecture/data-access.md for frontend readsdocs/architecture/resource-metrics.md for Resource Utilizationdocs/frontend/live-age.md for object/header/embedded-table age displaydocs/workflows/logs/overview.md,
docs/workflows/shell-debug.md, or docs/workflows/object-map.mdbackend/object_detail_provider.gobackend/resourcesbackend/resources/typesbackend/object_yaml*.gobackend/resources/pods/logs.gobackend/resources/nodes/logs.gobackend/resources/pods/debug.gobackend/shell_sessions.goBackend object-panel work must keep requests cluster-scoped and use complete
GVK/object identity. Rich detail and imperative operations belong in
backend/resources; list/table snapshot payloads belong in
backend/refresh/snapshot.
When adding a typed detail fetcher in backend/object_detail_provider.go, also
add exact-GVK capability metadata in objectDetailFetcherGVKs. That map
declares which concrete built-in GVK the typed fetcher can serve; it is not a
resource identity source and must not be used as a catalog replacement.
frontend/src/modules/object-panelfrontend/src/modules/object-panel/components/ObjectPanelfrontend/src/modules/object-panel/components/ObjectPanel/Logsfrontend/src/modules/object-panel/components/ObjectPanel/NodeLogsfrontend/src/modules/object-panel/hooksfrontend/src/shared/components/yaml for shared YAML editor mechanicsfrontend/src/core/resource-metrics for Resource Utilization data/adaptersfrontend/src/ui/dockablefrontend/src/shared/components/modalsfrontend/wailsjs/go/models.ts when Go DTOs changeFrontend object-panel work must use backend-provided statusPresentation and
ResourceLink.ref where available. Do not reconstruct object identity from kind
and name when a full backend reference should be carried.
Past useObjectPanel.openWithObject, the panel chain carries the
cluster-complete ObjectPanelRef
(frontend/src/modules/object-panel/objectPanelRef.ts, an alias of
ClusterObjectReference): openWithObject accepts the loose
KubernetesObjectReference and assertObjectRefHasRequiredIdentity narrows it
at that single chokepoint. Keep panel-internal types (openPanels,
CurrentObjectPanelContext, detail/utilization props) on ObjectPanelRef; do
not re-widen them to the nullable shape. See
docs/architecture/shared-resource-model.md → Frontend Reference Types.
Log viewer presentation shared by container logs and node logs lives under
frontend/src/modules/object-panel/components/ObjectPanel/Logs. Keep
transport-specific wiring in the container or node shell, and put shared search,
CSV export, parsed JSON, ANSI rendering, scroll restoration, and terminal theme
behavior in the shared log viewer utilities/components.
YAML editor mechanics live in frontend/src/shared/components/yaml/YamlEditor.
Use that shared component for single-document YAML viewing/editing instead of
adding new CodeMirror/search/context-menu stacks inside object-panel tabs. Keep
workflow state such as refresh, object identity, permissions, save/cancel,
reload/merge, drift, managedFields policy, and post-save notices in the
object-panel wrapper.
Object actions (delete, restart, scale, rollback, trigger, suspend,
port-forward) run through the shared useObjectActionController
(frontend/src/shared/hooks) rendered by ActionsMenu — the same controller
the cluster/namespace tables and object map use. It owns action execution,
permission gating, and every action modal (confirm/scale/scale-to-zero/rollback/
port-forward). The object-panel wrapper supplies only lifecycle callbacks
(onAfterDelete to close the panel, onAfterAction to refetch) plus the Node
cordon/drain openers. Do not reintroduce a panel-local action reducer, per-action
prop drilling through DetailsTab, or bespoke action modals.
Object Panel Resource Utilization reads live pod, workload, and node usage
through frontend/src/core/resource-metrics. Live usage is joined onto the
base domains' rows at serve: Pod panels lease the pods namespace scope,
Deployment/DaemonSet/StatefulSet panels lease namespace-workloads, and Node
panels lease nodes (see docs/architecture/resource-metrics.md).
Object-detail DTO utilization values are fallback-only while the base domain loads, is unavailable, or is permission denied. ReplicaSet is the exception: keep it detail-backed until a separate ReplicaSet unification slice adds direct owner identity while preserving the existing resolved-owner behavior.
Embedded Object Panel Pods tables use the same single base-domain query as main
Pods tables; live CPU/memory usage arrives on the pod rows (joined at serve)
and the freshness block rides the query payload's metrics.
clusterId, group, version, kind, and
namespace/name for concrete objects.useObjectActionController (no
panel-local action reducer, prop-drilled handlers, or duplicate modals).YamlEditor for editor mechanics and keep workflow
state in the caller.frontend/src/core/resource-metrics; object
details are fallback only except the documented ReplicaSet exception.LiveAgeText or shared age columns with timestamps
rather than refetching details to update relative text.mage qc:prerelease.Use focused checks while iterating:
go test ./backend ./backend/resources/...
npm run typecheck --prefix frontend
npm run test --prefix frontend -- object-panel
Then run mage qc:prerelease for non-documentation changes.