| name | markdown-tables |
| description | Formats markdown tables with fixed-width columns for consistent alignment. Use when creating tables, reformatting existing tables, or ensuring table readability. Triggers on terms like "format table", "align table", "fix table", "table columns", "markdown table". |
Markdown Table Formatting Skill
Markdown tables MUST use fixed-width columns with space padding. This is mandatory for readability in plain text editors and diffs.
Correct vs Incorrect Format
Correct: Fixed-width columns with padding
| Size | succinctly | jq | Speedup |
|----------|---------------------|---------------------|------------|
| **10KB** | 2.2 ms (4.3 MiB/s) | 4.1 ms (2.3 MiB/s) | **1.86x** |
| **1MB** | 24.5 ms (33 MiB/s) | 44 ms (18 MiB/s) | **1.79x** |
Incorrect: Unpadded columns
| Size | succinctly | jq | Speedup |
|------|------------|-----|---------|
| **10KB** | 2.2 ms (4.3 MiB/s) | 4.1 ms (2.3 MiB/s) | **1.86x** |
Column Width Rules
- Measure the widest content in each column (including header)
- Pad all cells to match the widest cell in that column
- Use spaces for alignment, not tabs
- Align text left, numbers can be right-aligned for decimals
- Leave one space after
| and before | for readability in data rows
- Separator row has NO spaces - format as
|------|---------| with dashes matching column widths
- Empty cells use single dash "-" padded with spaces:
| - |
Formatting Algorithm
For each column:
1. width = max(len(cell) for cell in column)
2. width = max(width, 3) # Minimum 3 chars for separator
For each row:
1. For each cell:
- Pad content to column width
- Add single space before and after content
2. Join cells with '|' delimiter
3. Add '|' at start and end
Bold Text in Tables
When using bold (**text**) in table cells:
Spaces must be OUTSIDE the bold markers, not inside:
<!-- CORRECT: Spaces outside ** -->
| **59.6ms** |
<!-- WRONG: Spaces inside ** (markdown won't render bold) -->
| ** 59.6ms** |
This is important for right-aligned numeric columns where padding is added.
Alignment Markers
| Alignment | Separator Format | Example |
|---|
| Left | ` | ---------- |
| Right | ` | ---------: |
| Center | ` | :--------: |
Complex Tables
For tables with many columns or very long content:
| Name | Type | Size | Description |
|------------|--------|---------|--------------------------------------|
| ib | Vec | ~N bits | Interest bits marking structural |
| | | | characters and value starts |
| bp | Vec | ~N bits | Balanced parens encoding tree |
| | | | structure |
Consider:
- Splitting into multiple smaller tables
- Using a different format (bullet lists, nested structure)
- Rotating the table (rows become columns)
Why Fixed-Width Tables Matter
- Readability in Git Diffs: Variable-width tables are hard to review in diff views
- Text Editor Alignment: Most code reviews happen in monospace fonts
- Terminal Display: Tables render correctly in terminal viewers
- Professional Appearance: Shows attention to detail
- Easier Maintenance: Clear structure makes updates simpler
Instructions
When formatting tables:
- Read the table - Identify all rows and columns
- Calculate widths - Find max content width per column
- Format header - Apply consistent width with padding
- Format separator - Match column widths with dashes
- Format data rows - Apply same widths to all cells
- Preserve alignment - Keep
: markers for right/center alignment