"Build, inspect, and troubleshoot MarkItDown third-party plugins
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill plugin-development --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Plugin Development?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-plugin-development)More formats (shields.io, HTML) on the badges page.
---
name: plugin-development
description: "Build, inspect, and troubleshoot MarkItDown third-party plugins
and custom DocumentConverter registration."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# MarkItDown Plugin Development
Use this sub-skill when a task involves authoring, packaging, discovering, enabling, or debugging third-party MarkItDown plugins. Plugins add custom `DocumentConverter` classes through installed Python package entry points and are disabled unless explicitly enabled.
## Start Here
- For plugin package shape, entry points, converter APIs, registration, priorities, and plugin-enabled conversion, read [references/authoring-reference.md](references/authoring-reference.md).
- For the distilled sample RTF plugin pattern, read [references/sample-plugin-walkthrough.md](references/sample-plugin-walkthrough.md).
- For missing plugins, warning-only plugin failures, stream-position assertions, priority surprises, and disabled plugins, read [references/troubleshooting.md](references/troubleshooting.md).
- To inspect an installed plugin package without the original plugin source tree, run `python scripts/check_plugin_package.py --plugin <entry-point-name>` from this sub-skill directory.
## Routing Boundaries
- Use this sub-skill for `DocumentConverter.accepts`, `DocumentConverter.convert`, `DocumentConverterResult`, `StreamInfo`, `register_converters`, `__plugin_interface_version__`, `MarkItDown.register_converter`, package entry points in the `markitdown.plugin` group, `enable_plugins=True`, `markitdown --list-plugins`, and `markitdown --use-plugins`.
- Route OCR-specific plugin setup and behavior to `../ocr-plugin/SKILL.md`; treat it as a real plugin example, not as the generic authoring guide.
- Route built-in converter usage, core conversion APIs, and non-plugin conversion errors to `../core-conversion/SKILL.md`.
- Route MCP server plugin environment variables and serving behavior to `../mcp-server/SKILL.md`.
- Exclude PyPI release automation and plugin systems that are not MarkItDown entry-point plugins.
## Quick Checklist
1. Package the plugin module with a `[project.entry-points."markitdown.plugin"]` entry whose key is the plugin name and whose value is the importable module.
2. Export `__plugin_interface_version__ = 1` and `register_converters(markitdown: MarkItDown, **kwargs)` from that module.
3. Implement each converter as a `DocumentConverter` with `accepts(file_stream, stream_info, **kwargs)` and `convert(file_stream, stream_info, **kwargs)`.
4. Register converters with `markitdown.register_converter(converter, priority=<float>)`; lower priority values are tried first and equal priorities retain stable order.
5. Verify discovery with `markitdown --list-plugins`, then verify runtime conversion with `markitdown --use-plugins <file>` or `MarkItDown(enable_plugins=True)`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!