From qkconvert
Convert between data formats using the QkConvert API. Use when the user asks to "convert CSV to JSON", "convert JSON to YAML", "convert XML to CSV", "convert TOML to JSON", "convert XLSX to JSON", "convert Markdown to HTML", or needs to transform between CSV, JSON, XML, YAML, XLSX, TOML, and Markdown.
How this skill is triggered — by the user, by Claude, or both
Slash command
/qkconvert:convert-dataThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Convert between data formats via QkConvert. 25 conversion pairs. Costs 1 credit per request.
Convert between data formats via QkConvert. 25 conversion pairs. Costs 1 credit per request.
Check that QKCONVERT_API_KEY is set by running test -n "$QKCONVERT_API_KEY" && echo "set" || echo "not set" in bash. If not set, tell the user:
Your QkConvert API key is not set. To fix this:
- Sign up free at https://qkconvert.dev/portal/signup
- Create an API key in the dashboard
- Set the env var permanently:
- Mac/Linux: Add
export QKCONVERT_API_KEY=sk_live_...to~/.bashrcor~/.zshrc- Windows: Run
setx QKCONVERT_API_KEY sk_live_...in CMD or PowerShell- Restart Claude Code
Do not proceed until the key is confirmed set.
Do not call the MCP tools directly — the OpenAPI-to-MCP bridge cannot send multipart/form-data, so all tool calls arrive with empty content. Always use curl via the Bash tool.
The endpoint pattern is /api/v1/data/{source}-to-{target}:
For text output (JSON, CSV, XML, YAML, TOML, HTML):
curl -s -X POST https://qkconvert.dev/api/v1/data/{source}-to-{target} \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "file=@{input_file}" \
-F "options={json_options}"
Text responses print to stdout. Pipe to a file with > output.json or use -o.
For binary output (XLSX):
curl -s -X POST https://qkconvert.dev/api/v1/data/{source}-to-xlsx \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "file=@{input_file}" \
-o output.xlsx
Rules:
-s (silent)-o for binary (XLSX), redirect > or -o for text formatsfile-F "options={\"pretty\":true}"curl -s -X POST https://qkconvert.dev/api/v1/data/csv-to-json \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-F "options={\"pretty\":true}" \
-o data.json
curl -s -X POST https://qkconvert.dev/api/v1/data/json-to-csv \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-o data.csv
curl -s -X POST https://qkconvert.dev/api/v1/data/json-to-yaml \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-o config.yaml
curl -s -X POST https://qkconvert.dev/api/v1/data/yaml-to-toml \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-o config.toml
curl -s -X POST https://qkconvert.dev/api/v1/data/toml-to-json \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-F "options={\"pretty\":true}" \
-o cargo.json
curl -s -X POST https://qkconvert.dev/api/v1/data/xlsx-to-json \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-F "options={\"pretty\":true}" \
-o report.json
curl -s -X POST https://qkconvert.dev/api/v1/data/md-to-html \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-F "options={\"full_document\":true,\"github_flavored\":true}" \
-o readme.html
curl -s -X POST https://qkconvert.dev/api/v1/data/csv-to-json \
-H "Authorization: Bearer $QKCONVERT_API_KEY" \
-F "[email protected]" \
-F "options={\"delimiter\":\"tab\",\"pretty\":true}" \
-o data.json
The endpoint is always /api/v1/data/{from}-to-{to}:
| From \ To | json | csv | xml | yaml | xlsx | toml | html |
|---|---|---|---|---|---|---|---|
| csv | yes | - | yes | yes | yes | - | - |
| json | - | yes | yes | yes | yes | yes | - |
| xml | yes | yes | - | yes | yes | - | - |
| yaml | yes | yes | yes | - | yes | yes | - |
| xlsx | yes | yes | yes | yes | - | - | - |
| toml | yes | - | - | yes | - | - | - |
| md | - | - | - | - | - | - | yes |
| Parameter | Type | For | Default | Description |
|---|---|---|---|---|
pretty | boolean | *-to-json | false | Pretty-print JSON |
delimiter | string | csv-to-*, *-to-csv | "," | "tab", ";", "|" |
has_header | boolean | csv-to-* | true | First row is headers |
root_name | string | *-to-xml | "root" | Root XML element name |
sheet | string | xlsx-to-* | first | Sheet name to read |
full_document | boolean | md-to-html | false | Full HTML wrapper |
github_flavored | boolean | md-to-html | true | GFM tables, strikethrough, task lists |
-o for outputFor text formats, show a preview of the first few lines. Report file sizes with wc -c < file.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
npx claudepluginhub necromunger/qkconvert-plugin --plugin qkconvert