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 skills add ladla90077-web/solidworks-mcp --skill pdfgit clone --depth 1 https://github.com/ladla90077-web/solidworks-mcpWrote 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/ladla90077-web/solidworks-mcp/pdf)<a href="https://agentmods.dev/skills/ladla90077-web/solidworks-mcp/pdf"><img src="https://agentmods.dev/badge/skills/ladla90077-web/solidworks-mcp/pdf/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ladla90077-web/solidworks-mcp/pdf"><img src="https://agentmods.dev/badge/skills/ladla90077-web/solidworks-mcp/pdf.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00136 | $0.02134 |
| Opus 5.5 | $0.00054 | $0.00854 |
| Sonnet 5.5 | $0.00027 | $0.00427 |
| Haiku 4.5 | $0.00014 | $0.00213 |
Grade A, and why
PDF scanned grade A with 1 finding 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 1mo 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
subprocess.run([soffice, "--headless", "--convert-to", "pdf", How it starts
The opening of the file, as written. The whole thing — 222 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Working with PDFs (.pdf)
You read and build PDFs by writing Python code, not by filling in a fixed
schema. The docgen tool's run_python runs your code in the app's bundled
interpreter, which has these libraries pre-installed:
fitz(PyMuPDF) — the one tool for almost everything: extract text and tables, merge/split/reorder/rotate/delete pages, watermark, extract images, create new PDFs, render pages to PNG, and OCR scanned pages.PIL(Pillow) — image ops (resize, convert, compose) for images you pull out of or drop into a PDF.pptx,docx,openpyxl,pandas— if the source or target drifts to Office formats. To turn one of those into a PDF, export via LibreOffice (see the "Office → PDF" note below).
run_python is real execution with full filesystem access. print(...) is
captured and returned to you. Iterate: write code → run → inspect → fix.
There is no pypdf / reportlab / pdfplumber in the bundle — don't import
them. PyMuPDF covers all of those use cases; use fitz.
Reading / extracting text
To dump text, use the files read tool on the .pdf, or write a script:
import fitz
doc = fitz.open("/path/to/document.pdf")
for i, page in enumerate(doc, 1):
print(f"## Page {i}")
print(page.get_text())
page.get_text("text") gives plain reading order; "words" / "dict" /
"blocks" give positions when you need layout. For a scanned (image-only) PDF
get_text() returns empty — see OCR below.
Extracting tables
import fitz
doc = fitz.open("/path/to/document.pdf")
for i, page in enumerate(doc, 1):
for t, table in enumerate(page.find_tables().tables, 1):
print(f"## Page {i} table {t}")
for row in table.extract():
print(row)
# table.to_pandas() gives a DataFrame if you want to write .csv/.xlsx
Merge / split / reorder / delete pages
import fitz
# Merge several PDFs into one
out = fitz.open()
for path in ["a.pdf", "b.pdf", "c.pdf"]:
with fitz.open(path) as src:
out.insert_pdf(src)
out.save("/abs/path/merged.pdf")
# Split: one file per page
src = fitz.open("input.pdf")
for i in range(src.page_count):
one = fitz.open()
one.insert_pdf(src, from_page=i, to_page=i)
one.save(f"/abs/path/page_{i+1}.pdf")
# Reorder / subset: select() takes the new page order (0-based)
src.select([2, 0, 1]) # keep+reorder these pages
src.delete_page(0) # or delete_pages(from_page=, to_page=)
src.save("/abs/path/reordered.pdf")
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.
- 1mo ago First seen · 222 lines · 136 tokens per session scan A 25bdd19ddff1
PDF is a skill published in the GitHub repository ladla90077-web/solidworks-mcp (4 stars, last pushed 3mo ago), licensed MIT. It adds 136 tokens to every session and 2,134 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
apify-youtube-transcript-scraper
Get YouTube captions, timestamped quotations, SRT/VTT and translated transcripts for videos, channels and playlists through the harshmaur/youtube-transcript-scraper Apify Actor.
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
skill-doc-delivery
Convert markdown to DOCX, PPTX, XLSX, PDF office documents — use when you need exportable deliverables.
meta-web-to-pdf-briefing
Render a topic into a distributable PDF briefing in three steps: web search → bullet summary → styled PDF. Trigger when the user asks for a PDF briefing on a single topic.
pkf-writing
Author, update, convert, validate, persist, and render PKF (.pkf) content through message-inline, Library Asset, or Memory Page carriers. Use for structured reports, knowledge pages, delivery cards, or any .pkf body. NOT for recall, memory-graph placement, or curation decisions — those belong to the memory skill.
chat-complex-documents
Chat with and search your complex documents — ask questions, extract tables and fields, and get answers grounded in the source. Connects the hosted Unstructured Transform MCP server to parse, structure, and enrich PDFs, Word/Excel/PowerPoint, images, scanned files, emails, and 60+ other formats into clean, AI-ready…