From 66f7ac98236f2f91d3cb2a800e56c2751f154534 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 1 Sep 2026 07:02:34 +0000 Subject: [PATCH 1/2] docs(skills): document the action and component nav item types The objectstack-ui Navigation Item Types table listed 7 of the 9 live discriminated-union members; `action` and `component` had no row, so an author reading the published skill could not discover either target. Funded within the file's token ceiling (headroom was 0) by deleting two Common Pitfalls entries that carry no fact the file does not state better elsewhere: - pitfall 1 restated the Data Source best-practice block verbatim (and that block is the richer of the two -- it also names automatic CRUD); - pitfall 4 ("always add a quick filter") is superseded by the ADR-0047 userFilters section, which prescribes the opposite default: omit `userFilters` when unsure, most views need no filter elements at all. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2 --- skills/objectstack-ui/SKILL.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/skills/objectstack-ui/SKILL.md b/skills/objectstack-ui/SKILL.md index 2a0eb7a69e..8b7f092906 100644 --- a/skills/objectstack-ui/SKILL.md +++ b/skills/objectstack-ui/SKILL.md @@ -641,6 +641,8 @@ export const CrmApp = App.create({ | `report` | `reportName`, `label`, `icon` | Link to a report | | `page` | `pageName`, `label`, `icon` | Link to a custom Page (`type: 'home' | 'list' | ...`) | | `url` | `url`, `label`, `icon` | External or custom URL | +| `action` | `actionDef` (`{ actionName, params? }`), `label`, `icon` | Run an action instead of navigating | +| `component` | `componentRef`, `params?`, `label`, `icon` | Built-in platform component; `componentRef` is a colon-joined registry key (`metadata:resource`), `params` become props | | `separator` | — | Visual separator | > **`requiresObject` / `requiresService`:** Use these on any item that @@ -2053,23 +2055,15 @@ the selected row in `list_item` contexts. ## Common Pitfalls -1. **Using `provider: 'api'` when `provider: 'object'` is available.** - Object provider gives you free filtering, sorting, pagination, and - real-time updates. - -2. **Putting too many columns in a grid view.** +1. **Putting too many columns in a grid view.** Users rarely need more than 6–8 columns visible by default. Use `hidden` for secondary columns. -3. **Forgetting `link: true` on the primary column.** +2. **Forgetting `link: true` on the primary column.** The first meaningful column (usually the name/subject) should be the navigation link to the record detail. -4. **Not setting quick filters.** - Quick filters dramatically improve usability. Always add at least a - "My Records" filter using `$currentUser`. - -5. **Putting widget grid placement in `position`.** +3. **Putting widget grid placement in `position`.** The grid-placement field is `layout: { x, y, w, h }` — `position` is not a widget key and the closed schema REJECTS it by name (it was silently dropped before protocol 17). `layout` is optional: omit it and the widget From 26e7d751d2c4890dda88086a7c9b34d0d69cafd0 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 1 Sep 2026 07:04:07 +0000 Subject: [PATCH 2/2] chore(gates): ratchet the skill-identifier-liveness Leg 2 gap to zero The recorded NavItemVariant gap of 2 (action, component) is closed by the table rows in the previous commit; the gate refuses an improvement that leaves budget behind for a later edit to spend silently. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2 --- scripts/skill-identifier-liveness-ledger.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/scripts/skill-identifier-liveness-ledger.json b/scripts/skill-identifier-liveness-ledger.json index a3a21ea50b..395629c983 100644 --- a/scripts/skill-identifier-liveness-ledger.json +++ b/scripts/skill-identifier-liveness-ledger.json @@ -31,10 +31,5 @@ "note": "Live in ../objectui at packages/plugin-gantt/src/GanttView.tsx, same shift-band prop family as dayStart. Unreachable from this repo's index for the same reason." } ], - "leg2Gaps": { - "navigation-item-types": [ - "action", - "component" - ] - } + "leg2Gaps": {} }