Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Builds tables and data grids for displaying tabular information, from simple HTML tables to complex enterprise data grids. Use when creating tables, implementing sorting/filtering/pagination, handling large datasets (10-1M+ rows), building spreadsheet-like interfaces, or designing data-heavy components. Provides performance optimization strategies, accessibility patterns (WCAG/ARIA), responsive designs, and library recommendations (TanStack Table, AG Grid).
.claude/skills/ancoleman-building-tables/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 25% | 0% |
This skill enables systematic creation of tables and data grids from simple HTML tables to enterprise-scale virtualized grids handling millions of rows. It provides clear decision frameworks based on data volume and required features, ensuring optimal performance, accessibility, and responsive design across all implementations.
Activate this skill when:
Select implementation tier based on data volume:
<100 rows → Simple HTML table with progressive enhancement
100-1,000 rows → Client-side features (sort, filter, paginate)
1,000-10,000 → Server-side operations with API pagination
10,000-100,000 → Virtual scrolling with windowing
>100,000 rows → Enterprise grid with streaming and workersFor detailed selection criteria, reference references/selection-framework.md.
For simple, read-only data display:
<table> structurereferences/basic-tables.md for patternsExample: examples/simple-responsive-table.tsx
For feature-rich interactions:
references/interactive-tables.mdExample: examples/sortable-filtered-table.tsx
For massive datasets:
references/advanced-grids.mdExample: examples/virtual-scrolling-grid.tsx
Critical performance thresholds:
To benchmark performance:
bash# Generate test data python scripts/generate_mock_data.py --rows 10000 # Analyze rendering performance node scripts/analyze_performance.js
For optimization strategies, reference references/performance-optimization.md.
references/sorting-filtering.mdreferences/sorting-filtering.mdreferences/pagination-strategies.mdreferences/selection-patterns.mdreferences/editing-patterns.mdscripts/export_table_data.pyEssential WCAG compliance:
To validate accessibility:
bashnode scripts/validate_accessibility.js
For complete requirements, reference references/accessibility-patterns.md.
Four proven strategies:
See examples/responsive-patterns.tsx for implementations. Reference references/responsive-strategies.md for details.
Best for custom designs and complete control:
bashnpm install @tanstack/react-table
See examples/tanstack-basic.tsx for setup.
Best for feature-complete solutions:
bashnpm install ag-grid-react
See examples/ag-grid-enterprise.tsx for setup.
For detailed comparison, reference references/library-comparison.md.
Tables use the design-tokens skill for consistent theming:
Supports light, dark, high-contrast, and custom themes. Reference the design-tokens skill for theme switching.
Start with the example matching the requirements:
simple-responsive-table.tsx # Basic HTML table
sortable-filtered-table.tsx # With sorting and filtering
paginated-server-table.tsx # Server-side pagination
virtual-scrolling-grid.tsx # High-performance for 100K+ rows
editable-data-grid.tsx # Inline editing with validation
grouped-aggregated-table.tsx # Hierarchical with aggregationsGenerate test data:
bashpython scripts/generate_mock_data.py --rows 100000 --columns 20
Benchmark performance:
bashnode scripts/analyze_performance.js --rows 10000
Validate accessibility:
bashnode scripts/validate_accessibility.js
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 21,673 | 20,030 | -8% | 1 | 1 | 0% | 4,372 | 5,782 | +32% | 0 | 0 | — |
case-02 | fail→pass | 14,341 | 13,247 | -8% | 1 | 1 | 0% | 2,492 | 4,131 | +66% | 0 | 0 | — |
case-03 | pass→pass | 16,129 | 13,220 | -18% | 1 | 1 | 0% | 2,529 | 4,086 | +62% | 0 | 0 | — |
case-04 | pass→pass | 13,009 | 10,847 | -17% | 1 | 1 | 0% | 2,117 | 3,560 | +68% | 0 | 0 | — |
case-05 | pass→pass | 17,534 | 10,233 | -42% | 1 | 1 | 0% | 2,746 | 3,324 | +21% | 0 | 0 | — |
case-06 | pass→pass | 11,731 | 7,795 | -34% | 1 | 1 | 0% | 1,903 | 3,045 | +60% | 0 | 0 | — |
case-07 | pass→pass | 13,874 | 9,230 | -33% | 1 | 1 | 0% | 2,251 | 3,214 | +43% | 0 | 0 | — |
case-08 | pass→pass | 7,950 | 7,429 | -7% | 1 | 1 | 0% | 1,190 | 2,981 | +151% | 0 | 0 | — |
case-09 | pass→pass | 7,143 | 5,051 | -29% | 1 | 1 | 0% | 1,029 | 2,468 | +140% | 0 | 0 | — |
case-10 | fail→pass | 16,778 | 6,729 | -60% | 1 | 1 | 0% | 2,652 | 2,653 | +0% | 0 | 0 | — |
case-11 | pass→pass | 4,280 | 6,288 | +47% | 1 | 1 | 0% | 645 | 2,720 | +322% | 0 | 0 | — |
case-12 | pass→pass | 3,365 | 3,153 | -6% | 1 | 1 | 0% | 418 | 2,063 | +394% | 0 | 0 | — |
case-13 | pass→pass | 15,019 | 12,871 | -14% | 1 | 1 | 0% | 2,500 | 3,932 | +57% | 0 | 0 | — |
case-14 | pass→pass | 6,386 | 1,926 | -70% | 1 | 1 | 0% | 935 | 1,923 | +106% | 0 | 0 | — |
case-15 | fail→pass | 10,386 | 1,989 | -81% | 1 | 1 | 0% | 1,919 | 1,873 | -2% | 0 | 0 | — |
case-16 | fail→pass | 9,759 | 1,713 | -82% | 1 | 1 | 0% | 1,462 | 1,832 | +25% | 0 | 0 | — |
case-17 | pass→pass | 15,080 | 16,290 | +8% | 1 | 1 | 0% | 2,461 | 4,480 | +82% | 0 | 0 | — |
case-18 | pass→pass | 11,333 | 5,485 | -52% | 1 | 1 | 0% | 1,753 | 2,469 | +41% | 0 | 0 | — |
case-19 | pass→pass | 7,575 | 9,333 | +23% | 1 | 1 | 0% | 1,179 | 3,153 | +167% | 0 | 0 | — |
case-20 | pass→pass | 8,231 | 6,175 | -25% | 1 | 1 | 0% | 1,338 | 2,641 | +97% | 0 | 0 | — |
case-21 | pass→pass | 17,256 | 18,716 | +8% | 1 | 1 | 0% | 2,684 | 4,760 | +77% | 0 | 0 | — |
case-22 | pass→pass | 14,543 | 9,929 | -32% | 1 | 1 | 0% | 2,694 | 3,548 | +32% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.