一键导入
tables-support-sorting
Ensure tables that display list data support sortable columns; use TableWithSort or Table.SortableHeaderCell and follow table-sort-defaults.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Ensure tables that display list data support sortable columns; use TableWithSort or Table.SortableHeaderCell and follow table-sort-defaults.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
When changing API routes, auth, or env-dependent behavior, add or update the corresponding integration tests and keep the test file layout consistent.
When adding or changing files under infra/k8s/ or sync targets for k8s, know what Argo CD syncs and remind the user to push to Git so the cluster can sync.
Keeps tools/generate-data seeders and docs in sync when main or management DB schema or ORM entities change. Use when adding or changing tables/entities in packages/orm, packages/management-orm, or infra database migrations.
When changing DB schema or permission dimensions, consider predefined roles and bucket_role / role-related code.
Use when adding or changing environment variables, infra/env/classification YAML, scripts/env-classification, K8s env render, or local env generation.
Common patterns for the Boilerplate HTTP API (Express)
| name | tables-support-sorting |
| description | Ensure tables that display list data support sortable columns; use TableWithSort or Table.SortableHeaderCell and follow table-sort-defaults. |
Use this skill when adding or changing tables that display list data (e.g. buckets, admins, messages). Every such table should support sortable columns where it makes sense, so users can order by name, date, or other relevant fields.
This is the orchestration skill for sortable tables:
TableWithSort (packages/ui): Use for tables that only need sortable headers (no filter bar, no pagination). It renders Table with a configurable header row: sortable columns use Table.SortableHeaderCell, others use Table.HeaderCell. You pass columns (with sortable, sortKey, defaultSortOrder), sortBy, sortOrder, and onSortChange(sortKey). The parent owns sort state (e.g. URL params) and navigates or updates state in onSortChange.
Table.SortableHeaderCell: For one-off sortable headers or custom table layouts, use the base Table.SortableHeaderCell directly with sortKey, label, activeSortBy, sortOrder, onSort.
TableWithFilter / ResourceTableWithFilter: For list pages that already have a filter bar and pagination, these components already support sortable columns via sortableColumnIds and URL/cookie. No change needed unless adding new columns.
Follow table-sort-defaults (.cursor/skills/table-sort-defaults/SKILL.md) for all default-order decisions.
sortBy and sortOrder from searchParams; sort data on the server; pass sortBy, sortOrder, and a base path (or callback) so the client can navigate to new sort params. Omit default sort from the URL for a clean default (e.g. ?tab=buckets without sortBy/sortOrder when sort is name/asc). For persistence/restore rules, use sort-prefs-cookie-by-path.onSortChange(sortKey) and let the parent update URL or local state and re-render.Bucket detail topics table uses TableWithSort: columns Name (asc), Last Message (desc), Created (desc), plus non-sortable Public and Actions. The page reads sortBy/sortOrder from the URL, sorts child buckets, and passes topicsSortBy, topicsSortOrder, topicsSortBasePath into BucketDetailContent, which renders TableWithSort and navigates on header click.