Add file-conversion plugin (ChangeThisFile) · codehornets/agents-claude-code@2189eb4 · GitHub
Skip to content

Commit 2189eb4

Browse files
author
Aadil Razvi
committed
Add file-conversion plugin (ChangeThisFile)
1 parent cf6059d commit 2189eb4

8 files changed

Lines changed: 197 additions & 6 deletions

File tree

‎.agents/plugins/marketplace.json‎

Lines changed: 12 additions & 0 deletions

‎.claude-plugin/marketplace.json‎

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{
1414
"name": "documentation-standards",
1515
"source": "./plugins/documentation-standards",
16-
"description": "HADS (Human-AI Document Standard) \u2014 semantic tagging convention for writing docs that work efficiently for both humans and AI models. Reduces token consumption by separating machine-critical facts from human context.",
16+
"description": "HADS (Human-AI Document Standard) — semantic tagging convention for writing docs that work efficiently for both humans and AI models. Reduces token consumption by separating machine-critical facts from human context.",
1717
"version": "1.0.1",
1818
"author": {
1919
"name": "Niksa Barlovic",
@@ -49,6 +49,19 @@
4949
"license": "MIT",
5050
"category": "development"
5151
},
52+
{
53+
"name": "file-conversion",
54+
"source": "./plugins/file-conversion",
55+
"description": "Convert files between 999 routes — PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI — via the free ChangeThisFile API. MCP-aware with a zero-dependency script fallback; no API key required.",
56+
"version": "1.0.0",
57+
"author": {
58+
"name": "Aadil Razvi",
59+
"url": "https://changethisfile.com"
60+
},
61+
"homepage": "https://github.com/aadilr/changethisfile-mcp",
62+
"license": "MIT",
63+
"category": "utilities"
64+
},
5265
{
5366
"name": "git-pr-workflows",
5467
"source": "./plugins/git-pr-workflows",
@@ -913,7 +926,7 @@
913926
"description": "Binary reverse engineering, malware analysis, firmware security, and software protection research for authorized security research, CTF competitions, and defensive security",
914927
"version": "1.0.1",
915928
"author": {
916-
"name": "D\u00e1vid Balatoni",
929+
"name": "Dávid Balatoni",
917930
"url": "https://github.com/balcsida"
918931
},
919932
"homepage": "https://github.com/wshobson/agents",
@@ -922,7 +935,7 @@
922935
},
923936
{
924937
"name": "conductor",
925-
"description": "Context-Driven Development plugin that transforms Claude Code into a project management tool with structured workflow: Context \u2192 Spec & Plan \u2192 Implement",
938+
"description": "Context-Driven Development plugin that transforms Claude Code into a project management tool with structured workflow: Context → Spec & Plan → Implement",
926939
"version": "1.2.2",
927940
"author": {
928941
"name": "Seth Hobson",
@@ -1045,7 +1058,7 @@
10451058
"url": "https://github.com/Anasss/qa-orchestra.git",
10461059
"path": "."
10471060
},
1048-
"description": "Multi-agent QA toolkit with 10 specialized agents covering the full QA lifecycle \u2014 orchestrator, environment-manager, functional-reviewer, test-scenario-designer, browser-validator, automation-writer, manual-validator, bug-reporter, release-analyzer, and smart-test-selector. Stack-agnostic, output-chained, designed around live validation via Chrome MCP.",
1061+
"description": "Multi-agent QA toolkit with 10 specialized agents covering the full QA lifecycle — orchestrator, environment-manager, functional-reviewer, test-scenario-designer, browser-validator, automation-writer, manual-validator, bug-reporter, release-analyzer, and smart-test-selector. Stack-agnostic, output-chained, designed around live validation via Chrome MCP.",
10491062
"version": "1.0.0",
10501063
"author": {
10511064
"name": "Anass Rach",
@@ -1058,7 +1071,7 @@
10581071
{
10591072
"name": "protect-mcp",
10601073
"source": "./plugins/protect-mcp",
1061-
"description": "Cedar policy enforcement + Ed25519 signed receipts for every Claude Code tool call. First cryptographic governance plugin \u2014 decisions are policy-gated before they run and every decision produces a tamper-evident receipt verifiable offline.",
1074+
"description": "Cedar policy enforcement + Ed25519 signed receipts for every Claude Code tool call. First cryptographic governance plugin — decisions are policy-gated before they run and every decision produces a tamper-evident receipt verifiable offline.",
10621075
"version": "0.1.1",
10631076
"author": {
10641077
"name": "Tom Farley",
@@ -1128,7 +1141,7 @@
11281141
{
11291142
"name": "ship-mate",
11301143
"source": "./plugins/ship-mate",
1131-
"description": "Your AI development teammate. Turns a story file into a shipped, reviewed, and tested feature via orchestrator \u2192 architect \u2192 developer \u2192 PR reviewer \u2192 QA \u2192 Playwright.",
1144+
"description": "Your AI development teammate. Turns a story file into a shipped, reviewed, and tested feature via orchestrator → architect → developer → PR reviewer → QA → Playwright.",
11321145
"version": "1.0.1",
11331146
"author": {
11341147
"name": "Pranay Yadav",

‎.cursor-plugin/marketplace.json‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,18 @@
450450
},
451451
"license": "MIT"
452452
},
453+
{
454+
"name": "file-conversion",
455+
"source": "./plugins/file-conversion",
456+
"version": "1.0.0",
457+
"description": "Convert files between 999 routes \u2014 PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI \u2014 via the free ChangeThisFile API. MCP-aware with a zero-dependency script fallback; no API key required.",
458+
"author": {
459+
"name": "Aadil Razvi",
460+
"email": ""
461+
},
462+
"homepage": "https://github.com/aadilr/changethisfile-mcp",
463+
"license": "MIT"
464+
},
453465
{
454466
"name": "framework-migration",
455467
"source": "./plugins/framework-migration",
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "file-conversion",
3+
"displayName": "File Conversion",
4+
"version": "1.0.0",
5+
"description": "Convert files between 999 routes \u2014 PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI \u2014 via the free ChangeThisFile API. MCP-aware with a zero-dependency script fallback; no API key required.",
6+
"author": {
7+
"name": "Aadil Razvi",
8+
"email": ""
9+
},
10+
"homepage": "https://github.com/aadilr/changethisfile-mcp",
11+
"license": "MIT"
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"name": "file-conversion",
3+
"version": "1.0.0",
4+
"description": "Convert files between 999 routes — PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI — via the free ChangeThisFile API. MCP-aware with a zero-dependency script fallback; no API key required.",
5+
"author": {
6+
"name": "Aadil Razvi",
7+
"url": "https://changethisfile.com"
8+
},
9+
"homepage": "https://github.com/aadilr/changethisfile-mcp",
10+
"license": "MIT"
11+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "file-conversion",
3+
"version": "1.0.0",
4+
"description": "Convert files between 999 routes \u2014 PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI \u2014 via the free ChangeThisFile API. MCP-aware with a zero-dependency script fallback; no API key required.",
5+
"skills": "./skills/",
6+
"author": {
7+
"name": "Aadil Razvi",
8+
"url": "https://changethisfile.com"
9+
},
10+
"homepage": "https://github.com/aadilr/changethisfile-mcp",
11+
"license": "MIT",
12+
"interface": {
13+
"displayName": "File Conversion",
14+
"shortDescription": "Convert files between 999 routes \u2014 PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI \u2014 via the free\u2026",
15+
"category": "Coding"
16+
}
17+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
name: file-conversion
3+
description: Convert files between formats — PDF to Word, HEIC to JPG, MP4 to MP3, CSV to JSON, EPUB to MOBI, and 999 total routes across images, video, audio, documents, data, fonts, ebooks, and archives. Free via changethisfile.com, no API key or signup. Use when the user needs a file converted to a different format.
4+
---
5+
6+
# File Conversion (ChangeThisFile)
7+
8+
Convert files between 999 conversion routes using the free ChangeThisFile service. No account or API key required. Conversions run server-side (FFmpeg, LibreOffice, Calibre, 7-Zip, sharp, Ghostscript); files are deleted within 24 hours.
9+
10+
## Decision order
11+
12+
1. **If ChangeThisFile MCP tools are available** (`changethisfile:convert_file`, `changethisfile:list_conversions`) — use them directly. `convert_file` takes `source_url` OR `base64_content` + `source_format`, plus `target_format`, and returns a temporary download URL.
13+
2. **Otherwise, use the bundled script** (requires network access to changethisfile.com):
14+
15+
```bash
16+
scripts/convert.sh <input-file> <target-format> [output-file]
17+
# e.g. scripts/convert.sh report.docx pdf
18+
# prints the output file path on success
19+
```
20+
21+
The script path is relative to this skill's directory. It base64-encodes the file, calls the hosted MCP endpoint over plain HTTPS, downloads the result, and writes it next to the input (or to `[output-file]`).
22+
23+
3. **Remote file (you have a URL, not a local file)** — skip the download/re-upload; one curl does it:
24+
25+
```bash
26+
curl -sS -X POST https://changethisfile.com/mcp \
27+
-H "Content-Type: application/json" \
28+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"convert_file","arguments":{"source_url":"<FILE_URL>","target_format":"pdf"}}}'
29+
```
30+
31+
The response text contains a download URL — fetch it with `curl -o <output>`.
32+
33+
## Discovering supported routes
34+
35+
Ask before guessing if a conversion is exotic:
36+
37+
```bash
38+
curl -sS -X POST https://changethisfile.com/mcp \
39+
-H "Content-Type: application/json" \
40+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_conversions","arguments":{"source_format":"docx"}}}'
41+
```
42+
43+
Omit `source_format` for a grouped summary of all 999 routes.
44+
45+
## Limits and errors
46+
47+
- Max input: **25 MB** (free path). Larger files: get a free API key (1,000 conversions/month) at https://changethisfile.com/docs/authentication and use `POST /v1/convert`.
48+
- Rate limit: **5 conversions/minute per IP**. On "Rate limit exceeded", wait 60 seconds and retry once.
49+
- "Unsupported conversion: X→Y" errors list the valid targets for that source format.
50+
- Download URLs expire after 1 hour — download immediately, then work with the local file.
51+
52+
## Environment notes
53+
54+
- Needs outbound HTTPS to `changethisfile.com`. On claude.ai, the code-execution sandbox restricts egress by default — prefer the MCP connector there, or the user can allow the domain under Settings → Capabilities.
55+
- Full docs: https://changethisfile.com/docs/mcp
Lines changed: 59 additions & 0 deletions

0 commit comments

Comments
 (0)