object-map
GitHub处理游艇对象映射的后端图数据、前端模型布局渲染及测试,涵盖资源类型、关系边、布局和调试快照。
Trigger Scenarios
Install
npx skills add luxury-yacht/app --skill object-map -g -y
SKILL.md
Frontmatter
{
"name": "object-map",
"description": "Work on Luxury Yacht object-map data, missing resource kinds, graph relationships, layout, renderer behavior, legend, debug snapshots, and tests"
}
Object Map
Use this when touching object-map backend graph data, supported kinds, relationship edges, frontend model/layout/rendering, legend/copy, debug snapshots, or object-map tests.
Core Model
Object map is a scoped refresh snapshot domain named object-map.
It is not a rich detail service and not an SSE/resource-stream path. The backend snapshot builds graph data; the frontend filters, annotates, lays out, and renders that graph.
Read:
AGENTS.mdbackend/AGENTS.mdfor backend changesfrontend/AGENTS.mdfor frontend changesdocs/workflows/object-map.mddocs/architecture/shared-resource-model.mdwhen identity, status, facts, or relationships are involveddocs/architecture/refresh-system.mdwhen domain registration, scopes, or diagnostics are involveddocs/frontend/live-age.mdwhen changing card age text
Backend Entry Points
Start here for graph/data correctness:
backend/refresh/snapshot/object_map.goplus the per-kind collectors/edges inbackend/resources/<kind>/objectmap*.go, dispatched viabackend/refresh/snapshot/object_map_collector_registry.goandobject_map_edge_registry.gobackend/refresh/system/registrations.gobackend/resourcemodelfor shared facts, status, identity, and linksbackend/refresh/snapshot/object_map_test.goor adjacent object-map tests
Backend object-map work often needs:
- Typed collection for every supported kind.
- Complete object references with
clusterId,group,version,kind, and concrete namespace/name when openable. - Edges from shared-resource-model facts where possible.
- Permission checks for newly collected resources.
- Test fixtures that prove the graph includes nodes and edges, not just that no error occurred.
For Gateway API fake-client tests, explicit list reactors may be required. Use
gatewayfake.NewClientset() rather than deprecated constructors.
Frontend Entry Points
Start here for visible behavior:
frontend/src/modules/object-panel/objectPanelRef.ts(MAP_SUPPORTED_KINDS,isObjectMapSupportedKind, andhasCompleteObjectMapReference)frontend/src/modules/object-map/ObjectMap.tsxfrontend/src/modules/object-map/useObjectMapModel.tsfrontend/src/modules/object-map/objectMapLayout.tsfrontend/src/modules/object-map/objectMapVisibleState.tsfrontend/src/modules/object-map/ObjectMapG6Renderer.tsxfrontend/src/modules/object-map/objectMapEdgeStyle.tsfrontend/src/modules/object-map/objectMapDebugStore.tsfrontend/src/modules/object-map/ObjectMap.css
Frontend object-map work often needs:
- Supported-kind allowlist updates.
- Payload/type updates if backend graph shape changes.
- Model/filter/collapse updates.
- Layout and visible-state updates.
- Renderer and apply-queue equality updates.
- Legend/palette/status styling updates.
- Targeted Vitest coverage for model/layout/renderer behavior.
Do not fix missing data by frontend-only labels or renderer patches when the backend graph is missing nodes, refs, or edges.
Sequencing
For missing kinds or missing links:
- Prove whether backend snapshot data contains the nodes and edges.
- If missing, fix backend collection/edge construction and tests first.
- Then update frontend support lists/types/model/rendering.
- Update
docs/workflows/object-map.mdif supported kinds, edge semantics, or user-facing behavior changed.
For visual-only renderer work:
- Confirm the data/model is already correct.
- Change frontend renderer/layout/styles only.
- Use browser or screenshot validation when visual behavior matters.
Checklist
- Backend graph includes the intended nodes.
- Backend graph includes the intended relationship edges.
- Openable refs are complete and include cluster/GVK/object identity.
- Permission checks cover newly listed resource types.
- Frontend kind support matches backend support.
- Payload types match backend shape.
- Model, visible state, layout, and renderer agree on new fields.
- Card age text is derived from timestamps through the live-age contract and does not change backend graph identity or layout inputs.
- Legend/copy uses user-facing terms such as "Objects" and "Links".
- Tests cover the changed graph or rendering behavior.
Validation
Use focused checks while iterating:
mise exec -- go test ./backend/refresh/snapshot -run ObjectMap
mise exec -- npm run test --prefix frontend -- object-map
mise exec -- npm run typecheck --prefix frontend
Then run the final gate for non-documentation work:
Then follow the root final validation gate.
Version History
- ee846a6 Current 2026-08-20 13:02


