Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/carbeneai/forge/markitdownnpx skills add CarbeneAI/Forge --skill markitdowngit clone --depth 1 https://github.com/CarbeneAI/ForgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/carbeneai/forge/markitdown)<a href="https://agentmods.dev/skills/carbeneai/forge/markitdown"><img src="https://agentmods.dev/badge/skills/carbeneai/forge/markitdown.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00072 | $0.00602 |
| Opus 5 | $0.00036 | $0.00301 |
| Sonnet 5 | $0.00014 | $0.00120 |
| Haiku 4.5 | $0.00007 | $0.00060 |
Grade A, and why
MarkItDown scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 67 lines — stays where its author put it; the contents beside it link to each section on GitHub.
MarkItDown
Convert any document to clean Markdown using Microsoft's markitdown library, with optional save to Obsidian vault.
Supported Formats
PDF, DOCX, PPTX, XLSX, XLS, HTML, CSV, JSON, XML, images (with OCR), audio (with transcription), .msg (Outlook), EPUB, ZIP archives, YouTube URLs, HTTP URLs
Workflow Routing
| Action | Trigger | Behavior |
|---|---|---|
| Convert | "convert this file to markdown" | Convert file → stdout or save to Obsidian |
| Batch | "convert all PDFs in folder" | Convert multiple files in batch |
| Import | "import this to obsidian" | Convert + save to Obsidian vault |
Quick Usage
# Convert a file and print markdown
bun ${PAI_DIR}/skills/MarkItDown/tools/Convert.ts input.pdf
# Convert and save to Obsidian vault
bun ${PAI_DIR}/skills/MarkItDown/tools/Convert.ts input.pdf --obsidian
# Convert with custom output filename
bun ${PAI_DIR}/skills/MarkItDown/tools/Convert.ts input.pdf --obsidian --name "My Notes"
# Convert to specific Obsidian subfolder
bun ${PAI_DIR}/skills/MarkItDown/tools/Convert.ts input.pdf --obsidian --folder "Imports"
# Batch convert all PDFs in a directory
bun ${PAI_DIR}/skills/MarkItDown/tools/Convert.ts ~/Documents/*.pdf --obsidian --folder "PDF-Imports"
Examples
Example 1: Convert PDF to Obsidian
User: "Convert this PDF to markdown and save in Obsidian"
→ Runs Convert.ts with --obsidian flag
→ Converts PDF to markdown via markitdown
→ Saves to ~/Nextcloud/PAI/Obsidian/Imports/<filename>.md
→ Reports success with file path
Example 2: Quick conversion for reading
User: "Can you read this DOCX file?"
→ Runs Convert.ts on the file
→ Returns markdown content to conversation
→ Claude can now analyze/summarize the content
Example 3: Batch import
User: "Import all the slides from my presentations folder to Obsidian"
→ Runs Convert.ts on each .pptx file
→ Saves all to Obsidian vault under Imports/
→ Reports count of files converted
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 67 lines · 72 tokens per session scan A 86d00f94cd0d
MarkItDown is a skill published in the GitHub repository CarbeneAI/Forge (9 stars, last pushed 1mo ago), licensed MIT. It adds 72 tokens to every session and 602 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
kb-create
Guided pattern and bug creation with interactive prompts and automatic quality validation. Use this skill when you need to create patterns, document solutions, add KB entries, document bug fixes, save solutions, or create knowledge base entries. Helps users create high-quality KB entries with proper structure…
tachi-report-assembly
Domain knowledge for PDF security report assembly — artifact detection patterns with tier selection rules, Typst data variable contract with type specifications and image path resolution, and brand asset handling with logo location and fallback rules. Consumed by the report-assembler agent during report generation.
~aod-bugfix
One-shot governed bug fix loop: diagnose → plan → implement → verify → document. TRIGGER when: user reports a bug, pastes an error message/stack trace/failing test, or asks to fix a bug. Runs 5 Whys root cause analysis, presents confirmation gate before any code changes, implements fix, verifies with tests, and…
~aod-run
Full lifecycle orchestrator that chains all 6 AOD stages (Discover, Define, Plan, Build, Deliver, Document) with disk-persisted state for session resilience and governance gates at every boundary. Use this skill when you need to run the full lifecycle, orchestrate stages, resume orchestration, or check orchestration…
xpath-xslt
XPath + XSLT injection — query manipulation in XML data stores, server-side XSLT RCE via document() / EXSLT extensions.
xxe-exploitation
XML External Entity (XXE) injection — local file reading via XML parsers, SOAP/WSDL API exploitation, blind out-of-band exfiltration, SVG/DOCX/XLSX upload XXE. Use for any challenge involving XML processing, SOAP endpoints, WSDL services, or XML-based file upload parsing.