Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,14 @@
"keywords": ["worktree", "git", "isolation", "safety"],
"tags": ["tooling", "safety"],
"source": "./plugins/worktree"
},
{
"name": "markitdown",
"description": "Convert documents (PDF, DOCX, PPTX, images, etc.) to Markdown using MarkItDown MCP server",
"category": "tooling",
"keywords": ["markitdown", "pdf", "docx", "pptx", "markdown", "conversion", "images"],
"tags": ["mcp", "conversion"],
"source": "./plugins/markitdown"
}
]
}
14 changes: 14 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,20 @@ bun run test
bun run typecheck
```

## Plugin Validation

Validate a plugin manifest or marketplace manifest using the Claude CLI:

```bash
# Validate a plugin
claude plugin validate <path-to-plugin-dir>

# Validate marketplace manifest
claude plugin validate .claude-plugin/marketplace.json
```

Run this before committing new plugins or after modifying `plugin.json`.

## Key Files

- `.claude-plugin/marketplace.json` - Marketplace configuration and plugin registry
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,11 @@ Git worktree isolation: injects context at session start and blocks file access

**Install:** `/plugin install worktree@pleaseai` | **Source:** [plugins/worktree](https://github.com/pleaseai/claude-code-plugins/tree/main/plugins/worktree)

#### MarkItDown
Convert documents (PDF, DOCX, PPTX, images, etc.) to Markdown using Microsoft's MarkItDown MCP server.

**Install:** `/plugin install markitdown@pleaseai` | **Source:** [plugins/markitdown](https://github.com/pleaseai/claude-code-plugins/tree/main/plugins/markitdown)

## Installation

### Add This Marketplace
Expand Down Expand Up @@ -260,6 +265,7 @@ Once the marketplace is added, install any plugin with:
/plugin install slack-agent@pleaseai
/plugin install mcp-neo4j@pleaseai
/plugin install worktree@pleaseai
/plugin install markitdown@pleaseai
```

## What Are Claude Code Plugins?
Expand Down
34 changes: 14 additions & 20 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions plugins/markitdown/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "markitdown",
"version": "1.0.0",
"description": "Convert documents (PDF, DOCX, PPTX, images, etc.) to Markdown using MarkItDown MCP server",
"author": {
"name": "Microsoft",
"url": "https://github.com/microsoft"
},
"homepage": "https://github.com/microsoft/markitdown",
"repository": "https://github.com/microsoft/markitdown",
Comment thread
amondnet marked this conversation as resolved.
"license": "MIT",
"keywords": ["markitdown", "pdf", "docx", "pptx", "images", "markdown", "conversion"],
"mcpServers": {
"markitdown": {
"command": "uvx",
"args": ["markitdown-mcp"]
}
}
}
17 changes: 17 additions & 0 deletions plugins/markitdown/hooks/check-binary-doc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
set -euo pipefail

input=$(cat)
file_path=$(echo "$input" | jq -r '.tool_input.file_path // ""')
ext="${file_path##*.}"
ext_lower=$(echo "$ext" | tr '[:upper:]' '[:lower:]')

case "$ext_lower" in
pptx|docx|xlsx|xls|ppt|doc)
message="WARNING: This file is a binary document format (.${ext_lower}) that the Read tool cannot parse properly — it will return garbled binary data. Use the markitdown MCP tool instead: call mcp__markitdown__convert_to_markdown with uri=\"file://${file_path}\"."
jq -n --arg msg "$message" '{hookSpecificOutput:{permissionDecision:"allow",additionalContext:$msg}}'
;;
*)
echo '{}'
;;
esac
16 changes: 16 additions & 0 deletions plugins/markitdown/hooks/hooks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"hooks": {
"PreToolUse": [
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/check-binary-doc.sh",
"timeout": 5
}
]
}
]
}
}
Loading