Skip to content
Back to skills

2509 Csv To Page F5aafd36

ASecurity

Convert CSV files into Concept 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 comma...

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
databashnode

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2509-csv-to-page_f5aafd36 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2509 Csv To Page F5aafd36?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2509 Csv To Page F5aafd36
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2509-csv-to-page-f5aafd36/badge)](https://www.skillsdirectory.com/skills/tools-only-2509-csv-to-page-f5aafd36)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md

# /csv-to-page

Convert CSV files into Concept 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

1. **Verify the CSV file exists** at the specified path
2. **Run analysis** to understand structure:
   ```bash
   node scripts/csv-to-markdown.js "<csv-path>" --output-json
   ```
3. **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)**:

```bash
node scripts/csv-to-markdown.js "<csv-path>" --title "<title>"
```

**Split mode (recommended for long content)**:

```bash
node scripts/csv-to-markdown.js "<csv-path>" --split --split-folder "<folder>" --title "<title>" --id-column 2
```

**Truncated mode (optional)**:

```bash
node scripts/csv-to-markdown.js "<csv-path>" --truncate 150 --title "<title>"
```

### Script Options

| Option                  | Description                                          |
| ----------------------- | ---------------------------------------------------- |
| `--title <title>`       | Custom title for the Concept 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:

1. **Add BA entity links** - Link to existing Projects, People, Systems
2. **Add appropriate tags** - Based on content (activity/, project/, domain/)
3. **For split mode** - Review and enhance individual notes with relationships

### Phase 5: Summary Report

Provide user with:

**For full table mode**:

```markdown
## CSV Import Complete

**Created**: `Concept - <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**:

```markdown
## CSV Import Complete (Split Mode)

**Summary**: `Concept - <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).

```bash
node scripts/csv-to-markdown.js "<file>.csv" --split --split-folder "Project Beta-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).

```bash
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:

```bash
# 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/20260105 Project Beta SI RFI Scoring sheet_BA.csv
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.