/csv-to-page
SkillFiles & storageConvert CSV files to Page notes with markdown tables (no truncation)
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /csv-to-page skill
What this skill tells your AI
The instructions your AI receives, as published by davidroliverba/architectkb in .claude/skills/csv-to-page/SKILL.md and read by ahel’s review.
Convert CSV files into Page notes with properly formatted markdown tables.
Key Feature: No content truncation by default - full cell content is preserved regardless of length (PapaParse has no cell size limits; V8 engine supports strings up to 512MB).
Features:
- RFC 4180 compliant parsing via PapaParse
- No truncation - full cell content preserved (up to 512MB per cell)
- Auto-detects delimiter (comma, semicolon, tab)
- Handles quoted fields, multi-line content, embedded commas
- Escapes markdown special characters (pipes, backslashes)
- Auto-detects numeric columns for right-alignment
- Split mode - create individual notes for rows with long content
Usage
/csv-to-page <csv-path>
/csv-to-page Inbox/data.csv
/csv-to-page Inbox/rfi.csv --split --split-folder "RFI-Responses"
/csv-to-page Inbox/data.csv --truncate 150 # Optional truncation
Instructions
Phase 1: CSV Analysis
- Verify the CSV file exists at the specified path
- Run analysis to understand structure:
node scripts/csv-to-markdown.js "<csv-path>" --output-json - Review the output to identify:
- Total rows and columns
- Empty rows (common in Excel exports)
- Maximum cell length (determines if split mode recommended)
- Whether there are metadata/instruction rows before actual data
Phase 2: Choose Conversion Mode
Based on the analysis, recommend a mode to the user:
Use AskUserQuestion:
Question: "How should the CSV be processed?"
Header: "CSV Mode"
Options:
1. "Full table (Recommended for simple data)"
Description: "Single markdown table with all content preserved"
2. "Split mode (Recommended for long content)"
Description: "Individual note per row - best for RFIs, surveys, responses"
3. "Truncated summary"
Description: "Compact table with truncated cells for overview"
Recommendations:
- Full table: For CSVs with cells under 500 characters
- Split mode: For RFI responses, surveys, or any CSV with cells over 1000 characters
- Truncated: Only when user specifically needs a compact summary view
Phase 3: Run Conversion
Full table mode (default, no truncation):
node scripts/csv-to-markdown.js "<csv-path>" --title "<title>"
Split mode (recommended for long content):
node scripts/csv-to-markdown.js "<csv-path>" --split --split-folder "<folder>" --title "<title>" --id-column 2
Truncated mode (optional):
node scripts/csv-to-markdown.js "<csv-path>" --truncate 150 --title "<title>"
Script Options
| Option | Description |
|---|---|
--title <title> | Custom title for the Page note |
--split | Create individual notes for each row |
--split-folder <path> | Folder for split notes (e.g., "RFI-Responses") |
--id-column <n> | Column index for note IDs (0-indexed, default: 0) |
--truncate <n> | Truncate cells to N characters (disabled by default) |
--start-row <n> | Start from row N (0-indexed, for skipping metadata) |
--end-row <n> | End at row N (for partial conversion) |
--delimiter <char> | Force delimiter if auto-detect fails |
--dry-run | Preview without creating files |
--verbose | Show detailed processing info |
Phase 4: Post-Processing
After conversion:
- Add entity links - Link to existing Projects, People, Systems
- Add appropriate tags - Based on content (activity/, project/, domain/)
- For split mode - Review and enhance individual notes with relationships
Phase 5: Summary Report
Provide user with:
For full table mode:
## CSV Import Complete
**Created**: `Page - <title>.md`
**Statistics**:
- Rows: <count>
- Columns: <count>
- Max cell length: <chars>
- Truncation: None (full content preserved)
**Note**: Obsidian may have display issues with very wide tables.
Consider using Reading View for better rendering.
For split mode:
## CSV Import Complete (Split Mode)
**Summary**: `Page - <title>.md`
**Individual Notes**: <count> notes in `<folder>/`
Each row has been converted to a separate note with:
- Full content preserved (no truncation)
- Proper markdown formatting
- Metadata linking back to source
**Next Steps**:
1. Review individual notes
2. Add project/person links
3. Add relevant tags
Handling Common CSV Patterns
RFI/Scoring Spreadsheets (Recommended: Split Mode)
Pattern: Questions with very long vendor responses (1000-10000+ chars).
node scripts/csv-to-markdown.js "<file>.csv" --split --split-folder "RFI-Responses" --id-column 2 --start-row 5
Benefits:
- Each question/response becomes a searchable note
- Full content preserved with proper formatting
- Can add scores, comments, tags to individual responses
- Supports Dataview queries for aggregation
Data Exports (Recommended: Full Table)
Pattern: Clean data with short cells (<500 chars).
node scripts/csv-to-markdown.js "<file>.csv" --title "Data Export - Jan 2026"
Multi-Section CSVs
Pattern: Multiple tables in one file separated by empty rows.
Approach: Use --start-row and --end-row to extract each section:
# Section 1
node scripts/csv-to-markdown.js data.csv --start-row 0 --end-row 20 --title "Section 1"
# Section 2
node scripts/csv-to-markdown.js data.csv --start-row 25 --end-row 50 --title "Section 2"
Technical Notes
No Content Limits
- PapaParse: No documented cell size limit
- V8 Engine: Strings up to 512MB supported
- Practical: Tested with 10,000+ character cells without issues
Markdown Table Considerations
For very long content in tables:
- Newlines converted to
<br>tags - Pipe characters escaped as
\| - Backslashes escaped as
\\ - May cause horizontal scrolling in Obsidian
Recommendation: Use --split mode for cells >1000 characters.
Supported Delimiters
- Comma (
,) - Default - Semicolon (
;) - Common in European exports - Tab (
\t) - TSV files
Character Encoding
- UTF-8 (default)
- Handles Windows-1252 and Latin-1 from Excel exports
- Special characters preserved
Example Workflows
RFI Scoring Sheet
User: /csv-to-page Inbox/vendor-rfi-responses.csv
Signals
- GitHub stars
- 52
- Forks
- 12
- Last commit
- Mar 2026
Advanced
- Catalog kind
- skill
- Gateway key
csv-to-page- Source
- github.com/davidroliverba/architectkb