Help us improve
Share bugs, ideas, or general feedback.
From splitty
Design a splitty pipeline YAML file from a user's natural-language request. Use when the user describes an analysis goal but has not provided a pipeline file, or when they say "design a pipeline for X", "what pipeline would you use for Y", or "make a splitty pipeline that does Z". Outputs a validated pipeline.yaml. Does not run the pipeline.
npx claudepluginhub joshuaramirez/claude-code-plugins --plugin splittyHow this skill is triggered — by the user, by Claude, or both
Slash command
/splitty:splitty-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Translate a user request into a valid splitty pipeline YAML file.
Applies 10 pre-set color/font themes or generates custom ones for slides, documents, reports, and HTML landing pages.
Share bugs, ideas, or general feedback.
Translate a user request into a valid splitty pipeline YAML file.
@stdin).You must read these before authoring:
${CLAUDE_PLUGIN_ROOT}/docs/pipeline-schema.md${CLAUDE_PLUGIN_ROOT}/pipelines/examples/map-reduce-summary.yaml${CLAUDE_PLUGIN_ROOT}/pipelines/examples/classify-and-extract.yaml${CLAUDE_PLUGIN_ROOT}/pipelines/examples/fan-out-fan-in.yamlPick the example closest to the user's goal as your starting template.
Map the request to one of these patterns. If unsure, ask the user.
| Goal shape | Topology |
|---|---|
| Summarize / extract one thing per chunk → one report | map → terminal(custom) |
| Filter chunks, then expensive analysis on survivors | map(classify) → gate → map(extract) → terminal |
| Two independent analyses combined per chunk | map(A) ∥ map(B) → map(merge) → terminal |
| Aggregate counts / structured records | map(extract-json) → terminal(strategy: concat-json) |
| Iteratively refine a draft | reduce(draft) → loop(critique→revise) → terminal |
| Strategy | Use when |
|---|---|
paragraphs | Prose, notes, long-form documents (default) |
lines | Logs, CSV-ish, line-oriented text |
tokens | Need consistent prompt sizing across chunks |
fixed | Binary-ish or unstructured streams |
none | Pipeline must see entire input as one chunk |
Default chunk sizes:
size: 2000 (chars), overlap: 0size: 200 (lines)size: 1000size: 4000 (chars)For every map, reduce, and custom-strategy terminal stage, write:
id — kebab-case, descriptive (extract-entities, not s1)agent_def.system — the persona in 1-3 sentences. Be specific about role
and constraints (e.g., "You never invent facts", "You output strict JSON").agent_def.tools — almost always [Read, Write]. Add Grep / Glob only
if the stage genuinely needs to look outside its input.agent_def.model — haiku for cheap classification, sonnet (default) for
most analysis, opus only for hard synthesis at the terminal.instructions — the precise task: format, length, what to include, what to
exclude. Include negative constraints (no prose, no commentary, no fences).output_format — json whenever downstream stages will programmatically
consume the output. markdown only at the terminal.For gate stages: write a condition that operates on JSON keys produced
upstream. Keep it simple — see docs/pipeline-schema.md for supported syntax.
For terminal with strategy: concat | concat-json | deep-merge: no
agent_def needed; the union is mechanical.
Save to .splitty/pipelines/<name>.yaml in the user's workspace. If the
directory does not exist, create it. Use the user's stated name or derive a
kebab-case one from the goal.
Run:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/splitty.py validate <path>
If validation fails, fix the issues and re-validate. Do not hand off an invalid pipeline.
Print:
Then ask: "Run it now?" Do not autorun unless the user said so explicitly in their original request.