Skip to content
Back to skills

Split

ASecurity

Transform a Note's internal structure into a Collection of Notes.

  • 10 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
security

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add bdambrosio/Cognitive_workbench --skill split --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Split?

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

Security grade badge for Split
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bdambrosio-split/badge)](https://www.skillsdirectory.com/skills/bdambrosio-split)

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

Download with Pro
SKILL.md
# Split Primitive

Transform a Note's internal structure into a Collection of Notes.

## Overview

The `split` primitive transforms a single Note into a Collection by splitting its content based on structure or delimiter. This is a **structure transformation**, not content inspection. To view Collection contents, use `display` (show to user) or `flatten` (merge into single Note).

## Input Types

The `split` primitive handles four input types:

1. **JSON Array**: Directly splits array elements (e.g., `[1, 2, 3]` → Collection of 3 Notes)
2. **JSON Object with Array Field**: Extracts array from specified field (default: `results`)
3. **JSONL Format**: Multiple JSON objects separated by newlines
4. **Plain Text**: Splits by delimiter (default: sentence boundaries)

## Parameters

### Required
- `target`: `$variable` - Note containing JSON array, JSON object with array field, JSONL, or plain text
- `out`: `$variable` - Variable name for resulting Collection

### Optional
- `field`: `string` (default: `'results'`) - Name of array field in JSON object case
- `delimiter`: `string` (default: `'sentence'`) - For plain text splitting:
  - `'sentence'` - Splits on sentence boundaries (`. `, `.\n`, `! `, `!\n`, `? `, `?\n`)
  - `'paragraph'` - Splits on double newlines (`\n\n`)
  - `'line'` - Splits on single newlines (`\n`)
  - Custom string - Splits on the specified delimiter string

## Behavior

### For Plain Text (default delimiter: `'sentence'`)

When splitting plain text with the default `'sentence'` delimiter:
- Splits on sentence boundaries: period (`.`), exclamation (`!`), or question mark (`?`) followed by space or newline
- **Normalizes whitespace**: Internal newlines are removed and multiple spaces are collapsed to single spaces within each segment
- **Filters empty segments**: Zero-length or whitespace-only segments are removed
- Preserves semantic units (complete sentences) even when text spans multiple lines (e.g., PDF-extracted text)

### For Other Delimiters

- `'paragraph'`: Splits on double newlines, normalizes whitespace within paragraphs
- `'line'`: Splits on single newlines, normalizes whitespace within lines
- Custom delimiter: Splits on the specified string, normalizes whitespace within segments

## Examples

### JSON Array
```json
{"type":"split","target":"$json_array_note","out":"$items"}
```
Input Note: `[1, 2, 3]` → Collection of 3 Notes

### JSON Object with Array Field
```json
{"type":"split","target":"$data_note","out":"$items"}
```
Input Note: `{"results": [{"x":1}, {"x":2}]}` → Collection of 2 Notes

### JSONL Format
```json
{"type":"split","target":"$jsonl_note","out":"$items"}
```
Input Note: `{"key":"val1"}\n{"key":"val2"}` → Collection of 2 Notes

### Plain Text - Sentence Splitting (Default)
```json
{"type":"split","target":"$text_note","out":"$sentences"}
```
Input Note: `"First sentence. Second sentence! Third sentence?"` → Collection of 3 Notes

### Plain Text - Paragraph Splitting
```json
{"type":"split","target":"$text_note","delimiter":"paragraph","out":"$paragraphs"}
```
Input Note: `"Para 1\n\nPara 2"` → Collection of 2 Notes

### Plain Text - Line Splitting
```json
{"type":"split","target":"$text_note","delimiter":"line","out":"$lines"}
```
Input Note: `"Line 1\nLine 2\nLine 3"` → Collection of 3 Notes

### Plain Text - Custom Delimiter
```json
{"type":"split","target":"$text_note","delimiter":"---","out":"$sections"}
```
Input Note: `"Section 1---Section 2---Section 3"` → Collection of 3 Notes

## Use Cases

- **Document Processing**: Split RFP documents into sentences for compliance analysis
- **Text Analysis**: Break down large text documents into semantic units
- **Data Extraction**: Transform structured JSON arrays into Collections for processing
- **PDF Text Processing**: Handle PDF-extracted text where sentences span multiple lines

## Important Notes

- **NOT for inspecting Collections**: Collections are already split. Use `display` to view Collection contents or `flatten` to merge back into a single Note.
- **search-web and semantic-scholar**: These tools return Collections directly - NO split needed.
- **Whitespace Normalization**: For plain text, internal newlines are removed and multiple spaces are collapsed to ensure clean semantic units.
- **Empty Filtering**: Empty or whitespace-only segments are automatically filtered out.

## Common Mistakes

- Trying to split a Collection to "see inside it" - Collections are already split, use `display` instead
- Forgetting that default behavior is sentence splitting (not line splitting) for plain text
- Expecting line breaks to be preserved - they are normalized to spaces for semantic processing

Files in this skill

  • SKILL.md4.6 KB
  • Skill.md4.6 KB
  • Skill_lower.md1.4 KB

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.