name: format-markdown-table
description: Generate well-formatted markdown tables from data with proper alignment and spacing. Use for report statistics, comparison tables, or summary data presentation.
Format Markdown Table
Create properly formatted markdown tables with alignment and consistent spacing.
When to Use
Report statistics tables
Comparison tables
Summary data presentation
Metric dashboards in reports
Instructions
Step 1: Receive Table Data
Accept headers and rows as input.
Expected Input:
{
"headers": ["Column 1", "Column 2", "Column 3"],
"rows": [
["Value 1", "Value 2", "Value 3"],
["Value 4", "Value 5", "Value 6"]
],
"alignment": ["left", "center", "right"]
}
Alignment (optional):
left: Left-aligned (default)center: Center-alignedright: Right-aligned
Step 2: Calculate Column Widths
Determine maximum width for each column.
Width Calculation:
Include header width
Include all row values
Add padding (1 space on each side)
Minimum width: 3 characters
Step 3: Format Header Row
Create header row with proper spacing.
Format:
| Header 1 | Header 2 | Header 3 |
Step 4: Format Separator Row
Create separator with alignment indicators.
Alignment Indicators:
Left:
:---or---Center:
:---:Right:
---:
Format:
|----------|:--------:|---------:|
Step 5: Format Data Rows
Create data rows with consistent spacing.
Format:
| Value 1 | Value 2 | Value 3 |
| Value 4 | Value 5 | Value 6 |
Step 6: Return Complete Table
Return formatted markdown table.
Expected Output:
| Column 1 | Column 2 | Column 3 |
|----------|:--------:|---------:|
| Value 1 | Value 2 | Value 3 |
| Value 4 | Value 5 | Value 6 |
Error Handling
Empty Headers: Return error requesting headers
Empty Rows: Return warning, create table with headers only
Mismatched Columns: Pad short rows with empty cells
Invalid Alignment: Use 'left' as default, warn
Examples
Example 1: Simple Statistics Table
Input:
{
"headers": ["Metric", "Count", "Percentage"],
"rows": [
["Critical Bugs", "3", "13%"],
["High Bugs", "8", "35%"],
["Medium Bugs", "12", "52%"]
],
"alignment": ["left", "right", "right"]
}
Output:
| Metric | Count | Percentage |
|---------------|------:|-----------:|
| Critical Bugs | 3 | 13% |
| High Bugs | 8 | 35% |
| Medium Bugs | 12 | 52% |
Example 2: Comparison Table
Input:
{
"headers": ["Feature", "Before", "After"],
"rows": [
["Build Time", "45s", "12s"],
["Test Time", "2m 30s", "1m 15s"],
["Bundle Size", "2.3 MB", "1.8 MB"]
],
"alignment": ["left", "center", "center"]
}
Output:
| Feature | Before | After |
|-------------|:-------:|:-------:|
| Build Time | 45s | 12s |
| Test Time | 2m 30s | 1m 15s |
| Bundle Size | 2.3 MB | 1.8 MB |
Example 3: Priority Distribution
Input:
{
"headers": ["Priority", "Open", "Fixed", "Total"],
"rows": [
["P0", "2", "5", "7"],
["P1", "5", "3", "8"],
["P2", "12", "8", "20"]
]
}
Output:
| Priority | Open | Fixed | Total |
|----------|------|-------|-------|
| P0 | 2 | 5 | 7 |
| P1 | 5 | 3 | 8 |
| P2 | 12 | 8 | 20 |
Example 4: Empty Rows (Header Only)
Input:
{
"headers": ["Name", "Value", "Status"],
"rows": []
}
Output:
| Name | Value | Status |
|------|-------|--------|
Validation
Formats headers correctly
Creates proper separators
Aligns columns as specified
Handles various data types (numbers, text)
Pads columns for consistent width
Handles empty rows gracefully
Supporting Files
examples.md: Table formatting examples (see Supporting Files section)