lists

Enforces shared-component assembly rules for Angular admin list screens using rt-table.

1|Updated Jan 14, 2024
One-click install
npx skills add https://github.com/Eyhenij/rt-tools --skill lists-eyhenij
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: lists
Source: https://github.com/Eyhenij/rt-tools/tree/main/.claude/skills/lists
Command: npx skills add https://github.com/Eyhenij/rt-tools --skill lists-eyhenij

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? List screens built with ad-hoc markup drift from the shared design system: skeletons, empty states, sorting, pagination, and row actions get reimplemented inconsistently across sections. This rule defines exactly how a list screen must be assembled from the shared kit components so every section behaves identically. ## Core Features & Use Cases - Assembly contract: Mandates that pages come from the shared list-page component, mechanics from the shared list-screen base, and tables from rt-table with [dataSource] — never custom markup. - Sort, filter, and row-action rules: Sortable headers name server fields, action availability lives in row fields, unavailable actions are hidden rather than disabled, and loading failures surface as toasts. - Tree-specific bindings: The companion implementation.md maps every rule article to concrete files such as admin-list-page.component.ts, AdminListScreenBase, and the ADMIN_LIST_HOST token. - Use Case: When editing a screen under libs/admin/*/feature/list or the kit table/pagination, load this rule to know the block order, where the query state lives, and what the kit already provides before writing any markup. ## Quick Start Load the lists rule before editing any list screen under libs/admin feature folders and follow its assembly contract for the table, toolbar, and pagination.

Frequently Asked Questions about lists

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build an Angular admin list screen with a shared table component?

Assemble the page from the shared list-page component, inherit mechanics from the shared list-screen base, and declare the table directly in the screen template using rt-table with [dataSource]. The screen only supplies the store, columns, and sort fields.

How should sortable column headers work with server-side sorting?

A sortable column's header carries a sort header naming the server field, not the column key. That same field name is sent to the server in the sort model, so no translation map between column keys and server fields is needed.

Should unavailable row actions be disabled or hidden in a table row menu?

Unavailable actions should not be drawn at all — place them under an @if bound to a row field rather than rendering them disabled. When a row has no available actions, hide the menu button entirely using a [rowHasActions] predicate.

Why does my custom table markup lose the empty state and mobile cards?

Skeletons, empty states, narrow-screen cards, and column settings are inputs of the kit table component. Wrapping the table or replacing it with native <table> markup bypasses these features because the kit collects columns through its own content query.

How should list loading errors be displayed to the user?

Loading refusals are served as a toast, not as a line above the table. Read the refusal key immediately after the request rather than subscribing to the store signal, since the store is shared between the list and the edit panel.