Not in the top 1,000 by GitHub stars
PSPDFKit-labs/nutrient-skills
AI agent skills for Nutrient APIs and SDKs — works with Claude Code, Codex, Gemini CLI, Cursor, and 35+ more agents
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugins/make-pdf/skills/make-pdf/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws-mcp/skills/nutrient-dws-mcp/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws/skills/ai-gateway/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws/skills/document-extraction-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws/skills/document-processor-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws/skills/dws-viewer-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-dws/skills/grounded-rag-ingestion/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-ai-assistant/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-android-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-document-authoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-document-engine/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-dotnet-server-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-flutter-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-ios-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-java-server-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-maui-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-nodejs-server-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-python-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-react-native-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/nutrient-sdk-dev/skills/nutrient-web-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/pdf-to-markdown/skills/pdf-to-markdown/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/pdf-to-text/skills/pdf-to-text/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/query/skills/query/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
plugins/remediate-pdf/skills/remediate-pdf/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
ceb60c085a44 → ceb60c085a44
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → ceb60c085a44
No earlier version was observed for comparison.
Verified commit ceb60c085a44cba9efadd89eaf64d2fb32a441ad
git clone --filter=blob:none --no-checkout https://github.com/PSPDFKit-labs/nutrient-skills.git .hotskills/pspdfkit-labs-nutrient-skills && git -C .hotskills/pspdfkit-labs-nutrient-skills checkout --detach ceb60c085a44cba9efadd89eaf64d2fb32a441ad
# Copy each selected skill directory from .hotskills/pspdfkit-labs-nutrient-skills into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/PSPDFKit-labs/nutrient-skills.git .hotskills/pspdfkit-labs-nutrient-skills && git -C .hotskills/pspdfkit-labs-nutrient-skills checkout --detach ceb60c085a44cba9efadd89eaf64d2fb32a441ad
# Copy each selected skill directory from .hotskills/pspdfkit-labs-nutrient-skills into .agents/skills/<skill-name>/Heat
1.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- make-pdf
plugins/make-pdf/skills/make-pdf - nutrient-dws-mcp
plugins/nutrient-dws-mcp/skills/nutrient-dws-mcp - ai-gateway
plugins/nutrient-dws/skills/ai-gateway - document-extraction-api
plugins/nutrient-dws/skills/document-extraction-api - document-processor-api
plugins/nutrient-dws/skills/document-processor-api - dws-viewer-api
plugins/nutrient-dws/skills/dws-viewer-api - grounded-rag-ingestion
plugins/nutrient-dws/skills/grounded-rag-ingestion - nutrient-ai-assistant
plugins/nutrient-sdk-dev/skills/nutrient-ai-assistant - nutrient-android-sdk
plugins/nutrient-sdk-dev/skills/nutrient-android-sdk - nutrient-document-authoring
plugins/nutrient-sdk-dev/skills/nutrient-document-authoring - nutrient-document-engine
plugins/nutrient-sdk-dev/skills/nutrient-document-engine - nutrient-dotnet-server-sdk
plugins/nutrient-sdk-dev/skills/nutrient-dotnet-server-sdk - nutrient-flutter-sdk
plugins/nutrient-sdk-dev/skills/nutrient-flutter-sdk - nutrient-ios-sdk
plugins/nutrient-sdk-dev/skills/nutrient-ios-sdk - nutrient-java-server-sdk
plugins/nutrient-sdk-dev/skills/nutrient-java-server-sdk - nutrient-maui-sdk
plugins/nutrient-sdk-dev/skills/nutrient-maui-sdk - nutrient-nodejs-server-sdk
plugins/nutrient-sdk-dev/skills/nutrient-nodejs-server-sdk - nutrient-python-sdk
plugins/nutrient-sdk-dev/skills/nutrient-python-sdk - nutrient-react-native-sdk
plugins/nutrient-sdk-dev/skills/nutrient-react-native-sdk - nutrient-web-sdk
plugins/nutrient-sdk-dev/skills/nutrient-web-sdk - pdf-to-markdown
plugins/pdf-to-markdown/skills/pdf-to-markdown - pdf-to-text
plugins/pdf-to-text/skills/pdf-to-text - query
plugins/query/skills/query - remediate-pdf
plugins/remediate-pdf/skills/remediate-pdf
How it works
make-pdf
When your agent uses it
Generate finished PDFs from Markdown or HTML via the Nutrient DWS Build API - single files or whole directories - with compliance-grade output options (accessible PDF/UA, archival PDF/A, text watermarks) and built-in conformance verification. Use when the user asks to make, generate, export, or batch-convert PDFs from Markdown, HTML, notes, or reports, especially when PDFs must be accessible (PDF/UA, WCAG/ADA/EAA), archival (PDF/A), or watermarked - or to check whether an existing PDF carries valid PDF/UA or PDF/A markers. For processing an existing PDF (sign, redact, OCR, merge), use document-processor-api instead.
What it loads into context
Frontmatter
148 tokensAlways available to the agent
SKILL.md
2,044 tokensWhen the skill is activated
Reference documents
291 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Start
- Common Tasks
- Input Rules
- Verification (built in)
- Batch Conversion
- Layout Honesty (Chromium limits)
- Chaining Other Document Operations
- Implementation Rules
- Validation
Scripts executed separately
scripts/make-pdf.pyscripts/smoke-test.pyscripts/verify-pdf.py
Files
../../../../.claude-plugin/marketplace.jsonasset4,504 bytes../../.claude-plugin/plugin.jsonasset511 bytesSKILL.mdcore8,483 bytesSKILL.mdcore8,483 bytesSKILL.mdcore8,483 bytesSKILL.mdcore8,483 bytesassets/sample/sample.mddoc1,211 bytesassets/templates/document.htmlasset429 bytesassets/templates/memo.htmlasset482 bytesassets/themes/dark.cssasset2,234 bytesassets/themes/light.cssasset2,235 bytesscripts/make-pdf.pyruns23,180 bytesscripts/smoke-test.pyruns11,994 bytesscripts/verify-pdf.pyruns14,846 bytes../../../nutrient-dws/.claude-plugin/plugin.jsonasset907 bytes../../../nutrient-sdk-dev/.claude-plugin/plugin.jsonasset714 bytes../../../pdf-to-markdown/.claude-plugin/plugin.jsonasset146 bytes../../../pdf-to-text/.claude-plugin/plugin.jsonasset147 bytes../../../query/.claude-plugin/plugin.jsonasset168 bytes../../../remediate-pdf/.claude-plugin/plugin.jsonasset532 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-dws-mcp
When your agent uses it
Process, convert, OCR, sign, redact, parse, or extract data from documents with the Nutrient DWS MCP tools. Use when the user wants cloud document processing through the installed Nutrient plugin.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
397 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose a tool
- Workflow
Files
SKILL.mdcore1,988 bytesSKILL.mdcore1,988 bytesagents/openai.yamlasset407 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubai-gateway
When your agent uses it
Two primitives of the Nutrient AI Gateway. Chat models (`nutrient-s`/`nutrient-m`/`nutrient-l` via `POST /responses` or `POST /chat/completions`) are OpenAI-compatible, for open-ended generation. The decision API (`POST /systemone`, TypeSafe-compatible) returns calibrated probabilities instead of free text, for routing, flagging, and scoring — `noul` for yes/no, `choice` for picking one of several labels, `score` for placing content on an ordered scale. Route to the decision API whenever the task is "classify this", "is this true/false", "route to a category", "flag for review", "rate the severity/quality", or anything else that would otherwise need regex, keyword matching, or asking a chat model to emit structured JSON. Route to a chat model for open-ended generation, summarization, or tool-calling. Triggers include AI Gateway, nutrient-document-decision, nutrient-systemone, System One, TypeSafe, calibrated probability, noul question, choice question, score question, classify this document/message, route to a category, flag for review, confidence threshold.
What it loads into context
Frontmatter
400 tokensAlways available to the agent
SKILL.md
2,936 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choosing chat vs. decision
- Question types (`POST /systemone`)
- Two decision models — pick one, know the difference
- Chat models (`POST /responses`, `POST /chat/completions`)
- Setup
- Cookbooks
- Good practice
- Common issues
- Links
Files
SKILL.mdcore11,731 bytesSKILL.mdcore11,731 bytesSKILL.mdcore11,731 bytesSKILL.mdcore11,731 bytesSKILL.mdcore11,731 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubdocument-extraction-api
When your agent uses it
Two primitives of the Nutrient Data Extraction API. `parse` (`/extraction/parse`) returns the whole-document model — a structural JSON of typed elements with bounding boxes, or whole-document Markdown — for RAG ingestion, search indexing, content migration, or layout-aware understanding. `extract` (`/extraction/extract`) returns just the fields you define in a JSON Schema, each with a per-field citation grounding it to a page region. Route to `extract` for "pull the invoice number and total", "extract these fields", "map to my schema", or "with citations"; route to `parse` for "parse this document", "whole-document Markdown", "chunk for embeddings", or "extract every table/element" (no target schema). Triggers include parse this document, extract layout, RAG pipeline, schema extraction, field extraction, cited fields, invoice/form field extraction, document understanding.
What it loads into context
Frontmatter
341 tokensAlways available to the agent
SKILL.md
2,593 tokensWhen the skill is activated
Reference documents
1,108 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choosing parse vs extract
- When to use
- `/extraction/extract` — schema field extraction with citations
- Setup
- `/extraction/parse` — one primitive, two output shapes
- Rules
Scripts executed separately
scripts/extract.pyscripts/lib/common.pyscripts/lib/test_common.pyscripts/parse.pyscripts/test_extract.py
Files
.gitignoreasset19 bytesSKILL.mdcore10,752 bytesSKILL.mdcore10,752 bytesSKILL.mdcore10,752 bytesSKILL.mdcore10,752 bytesSKILL.mdcore10,752 bytesreferences/extract-output-and-citations.mddoc2,255 bytesreferences/parse-output-filtering.mddoc2,224 bytesscripts/extract.pyruns13,204 bytesscripts/lib/common.pyruns2,578 bytesscripts/lib/test_common.pyruns2,681 bytesscripts/parse.pyruns5,796 bytesscripts/test_extract.pyruns20,024 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubdocument-processor-api
When your agent uses it
Process documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
What it loads into context
Frontmatter
252 tokensAlways available to the agent
SKILL.md
1,819 tokensWhen the skill is activated
Reference documents
6,979 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Setup
- When to use
- Tool preference
- Single-operation scripts
- Multi-Step Workflow Rule
- PDF Requirements
- Decision rules
- Anti-patterns
- Reference map
- Rules
- Security Hardening Addendum
Scripts executed separately
assets/templates/custom-workflow-template.pyscripts/add-pages.pyscripts/convert.pyscripts/delete-pages.pyscripts/duplicate-pages.pyscripts/extract-key-value-pairs.pyscripts/extract-table.pyscripts/extract-text.pyscripts/lib/common.pyscripts/merge.pyscripts/ocr.pyscripts/optimize.pyscripts/password-protect.pyscripts/redact-ai.pyscripts/rotate.pyscripts/sign.pyscripts/split.pyscripts/watermark-text.py
Files
.gitignoreasset19 bytesSKILL.mdcore7,927 bytesSKILL.mdcore7,927 bytesSKILL.mdcore7,927 bytesSKILL.mdcore7,927 bytesSKILL.mdcore7,927 bytesSKILL.mdcore7,927 bytesagents/openai.yamlasset456 bytesassets/nutrient.svgasset1,808 bytesassets/templates/custom-workflow-template.pyruns1,237 bytesreferences/REFERENCE.mddoc1,432 bytesreferences/compliance-and-optimization.mddoc3,090 bytesreferences/extraction-and-ocr.mddoc2,617 bytesreferences/generation-and-conversion.mddoc3,250 bytesreferences/pdf-manipulation.mddoc2,163 bytesreferences/request-basics.mddoc3,052 bytesreferences/security-signing-and-forms.mddoc3,983 bytesreferences/workflow-recipes.mddoc2,834 bytesscripts/add-pages.pyruns1,181 bytesscripts/convert.pyruns1,035 bytesscripts/delete-pages.pyruns1,303 bytesscripts/duplicate-pages.pyruns1,347 bytesscripts/extract-key-value-pairs.pyruns1,101 bytesscripts/extract-table.pyruns1,053 bytesscripts/extract-text.pyruns1,590 bytesscripts/lib/common.pyruns4,906 bytesscripts/merge.pyruns1,058 bytesscripts/ocr.pyruns1,218 bytesscripts/optimize.pyruns1,497 bytesscripts/password-protect.pyruns1,330 bytesscripts/redact-ai.pyruns1,515 bytesscripts/rotate.pyruns1,223 bytesscripts/sign.pyruns2,002 bytesscripts/split.pyruns1,672 bytesscripts/watermark-text.pyruns1,484 bytestests/testing-guide.mddoc4,207 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubdws-viewer-api
When your agent uses it
Upload documents to Nutrient-managed cloud storage and mint browser viewer session JWTs via the Nutrient DWS Viewer API (cloud-hosted document viewing). Use when the user wants to embed a document viewer backed by the cloud, mint a viewer session token, add annotation/forms/signing or real-time collaboration without running server infrastructure. Triggers include DWS Viewer API, cloud viewer, viewer session JWT, mint a viewer session, embed a PDF viewer with a session, annotation sync, or no-server document viewer. Not for the self-hosted Web SDK (`@nutrient-sdk/viewer` / `NutrientViewer.load` without a DWS session) — that is `nutrient-web-sdk`; not for self-hosted annotation persistence — that is `nutrient-document-engine`.
What it loads into context
Frontmatter
520 tokensAlways available to the agent
SKILL.md
3,087 tokensWhen the skill is activated
Reference documents
3,569 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- Setup
- Tool preference
- Document modes
- Operations
- Rules
- Security Hardening Addendum
- Documentation
- Reference map
Scripts executed separately
scripts/test_viewer_session.pyscripts/viewer-session.pytests/smoke_viewer.py
Files
.gitignoreasset34 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesSKILL.mdcore12,590 bytesreferences/embed-guide.mddoc3,020 bytesreferences/viewer-decision-matrix.mddoc5,250 bytesscripts/test_viewer_session.pyruns30,903 bytesscripts/viewer-session.pyruns26,616 bytestests/fixtures/sample.pdfasset2,021 bytestests/smoke-test-guide.mddoc5,361 bytestests/smoke_viewer.pyruns4,404 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubgrounded-rag-ingestion
When your agent uses it
Chunk a document into provenance-carrying JSONL ready for embedding via the Nutrient Data Extraction API (`/extraction/parse`, spatial output). Every chunk carries element type, page index, bounding box, confidence, and reading order, traceable to a specific page region. Use for grounded or auditable RAG, cited retrieval, confidence-aware ingestion, or any pipeline that must prove which document region a retrieved answer came from. Triggers include grounded RAG, auditable RAG, RAG with provenance, chunk with bounding box, cite page, provenance-carrying chunks, confidence-aware chunking, or embedding pipeline. Not for cheap Markdown — use document-extraction-api with `--output-format markdown` for that. Not for known target fields — if the user wants specific fields ("invoice number and total", "map to my schema", "return these fields cited"), use document-extraction-api's `extract` (one cited call), not whole-document chunking.
What it loads into context
Frontmatter
357 tokensAlways available to the agent
SKILL.md
2,847 tokensWhen the skill is activated
Reference documents
1,647 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- Dependency: `document-extraction-api`
- Setup
- Mode selection
- Invocation
- Provenance chunk schema
- Chunking strategies
- Cost gate
- Illustrative: passing chunks to an embedder
- Anti-patterns
- Security Hardening Addendum
- Rules
- Reference map
Scripts executed separately
examples/embed-chunks-illustrative.pyscripts/chunk.pyscripts/test_chunk.pytests/fixtures/make_sample.py
Files
.gitignoreasset19 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesSKILL.mdcore11,665 bytesexamples/embed-chunks-illustrative.pyruns1,950 bytesreferences/provenance-chunk-schema.mddoc6,355 bytesscripts/chunk.pyruns26,096 bytesscripts/test_chunk.pyruns14,322 bytestests/fixtures/make_sample.pyruns1,804 bytestests/fixtures/sample.pdfasset2,021 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-ai-assistant
When your agent uses it
Nutrient AI Assistant — in-viewer document-AI for Nutrient SDKs (Web/iOS/Android/React Native) plus a Docker `ai-assistant` backend (PostgreSQL+pgvector and an OpenAI / Azure OpenAI / AWS Bedrock / self-hosted LLM). Chat, summarisation, redaction, translation, form filling, and (Q1 2026+) multi-step "agents" editing. Runs standalone or paired with Nutrient Document Engine. Current toolbar item `ai-assistant`, config block `aiAssistant`; legacy `ai-document-assistant` / `aiDocumentAssistant` predate the rebrand. Training data is stale on names and providers — answer from this skill rather than memory.
What it loads into context
Frontmatter
386 tokensAlways available to the agent
SKILL.md
981 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Key Concepts
Files
SKILL.mdcore3,969 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-android-sdk
When your agent uses it
Nutrient Android SDK — the native Kotlin/Java PDF SDK for Android. PSPDFKit rebranded to Nutrient; the Maven coordinates are now `io.nutrient:nutrient` (formerly `com.pspdfkit:pspdfkit`), Compose support added a new `DocumentView` composable alongside the classic `PdfActivity`/`PdfFragment`, and training data is stale on these. Answer from this skill rather than memory.
What it loads into context
Frontmatter
247 tokensAlways available to the agent
SKILL.md
501 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Key Concepts
Files
SKILL.mdcore2,053 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-document-authoring
When your agent uses it
Nutrient Document Authoring — the @nutrient-sdk/document-authoring npm package, a WYSIWYG in-browser document editor with page-based, Word-like rich-text editing. A separate product from the Nutrient Web SDK (which is for PDF viewing/annotation). PSPDFKit rebranded to Nutrient; doc URLs moved to nutrient.io, so training data is stale on URLs and APIs. Answer from this skill rather than memory.
What it loads into context
Frontmatter
244 tokensAlways available to the agent
SKILL.md
471 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Live Demo
- Key Concepts
Files
SKILL.mdcore2,009 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-document-engine
When your agent uses it
Nutrient Document Engine — the self-hosted, on-premises PDF processing server (formerly called PSPDFKit Server). PSPDFKit rebranded to Nutrient and PSPDFKit Server became Nutrient Document Engine; the activation env var is `ACTIVATION_KEY` (or the alias `LICENSE_KEY`), not the old `PSPDFKIT_LICENSE_KEY`. Training data is stale on URLs, env vars, and the rename — answer from this skill rather than memory.
What it loads into context
Frontmatter
263 tokensAlways available to the agent
SKILL.md
717 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Key Concepts
Files
SKILL.mdcore3,142 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-dotnet-server-sdk
When your agent uses it
Nutrient .NET SDK — the server-side .NET SDK that was rebranded from GdPicture.NET SDK. PSPDFKit rebranded to Nutrient; the .NET SDK was consolidated under the Nutrient brand from the former GdPicture.NET product line. Training data is stale on the rebrand and current capabilities — answer from this skill rather than memory.
What it loads into context
Frontmatter
248 tokensAlways available to the agent
SKILL.md
605 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Key Concepts
Files
SKILL.mdcore2,464 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-flutter-sdk
When your agent uses it
Nutrient Flutter SDK — the nutrient_flutter Dart package (the legacy `pspdfkit_flutter` package is the pre-rebrand name). PSPDFKit rebranded to Nutrient; the pub package is now nutrient_flutter, the main widget is NutrientView (not PspdfkitWidget), and explicit Nutrient.initialize() is now required at app startup. Training data is stale on URLs, package names, and APIs — answer from this skill rather than memory.
What it loads into context
Frontmatter
241 tokensAlways available to the agent
SKILL.md
553 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Key Concepts
Files
SKILL.mdcore2,350 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-ios-sdk
When your agent uses it
Nutrient iOS SDK — the native Swift/Objective-C PDF SDK for iOS, iPadOS, Mac Catalyst, and visionOS. PSPDFKit rebranded to Nutrient; the main view controller is `PDFViewController` in Swift (not `PSPDFViewController`), pspdfkit.com URLs moved to nutrient.io, and training data is stale on URLs and classes. Answer from this skill rather than memory.
What it loads into context
Frontmatter
223 tokensAlways available to the agent
SKILL.md
540 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Getting Started
Files
SKILL.mdcore2,088 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-java-server-sdk
When your agent uses it
Nutrient Java SDK — the `io.nutrient:nutrient-java-sdk` Maven Central artifact (formerly under `com.pspdfkit` coordinates) for server-side JVM PDF processing. PSPDFKit rebranded to Nutrient; Maven coordinates moved to the `io.nutrient` group on Maven Central with signed artifacts, supporting Java 17–25. Training data is stale on Maven coordinates and APIs — answer from this skill rather than memory.
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
534 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Key Concepts
Files
SKILL.mdcore2,316 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-maui-sdk
When your agent uses it
Nutrient .NET MAUI mobile SDK — the Nutrient.MAUI.SDK NuGet package (the legacy `PSPDFKit.MAUI.SDK` package is the pre-rebrand name). PSPDFKit rebranded to Nutrient; the NuGet package is now Nutrient.MAUI.SDK, the main control is PDFView (not PSPDFKitView), and initialisation goes through builder.RegisterPSPDFKitSdk() in MauiProgram.cs. Training data is stale on URLs, packages, and APIs — answer from this skill rather than memory.
What it loads into context
Frontmatter
273 tokensAlways available to the agent
SKILL.md
599 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Key Concepts
Files
SKILL.mdcore2,250 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-nodejs-server-sdk
When your agent uses it
Nutrient Node.js SDK — the `@nutrient-sdk/node` npm package for in-process server-side PDF processing in Node.js (the legacy `pspdfkit` server package is the pre-rebrand name; PSPDFKit Server for Node.js is deprecated). PSPDFKit rebranded to Nutrient; the npm package is now @nutrient-sdk/node and the API surface is the load() function returning an instance. Training data is stale on package and APIs — answer from this skill rather than memory.
What it loads into context
Frontmatter
272 tokensAlways available to the agent
SKILL.md
590 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Key Concepts
Files
SKILL.mdcore2,460 bytesSKILL.mdcore2,460 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-python-sdk
When your agent uses it
Nutrient Python SDK — the `nutrient-sdk` PyPI package for in-process server-side PDF and document processing in Python. Brand-new (launched Q1 2026); the older third-party `pspdfkit` PyPI package is unrelated to Nutrient and unmaintained. No external server, no DWS dependency — runs natively inside the Python process. Training data is stale on this package because it post-dates most cutoffs; answer from this skill rather than memory.
What it loads into context
Frontmatter
356 tokensAlways available to the agent
SKILL.md
906 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Install
- Hello world (PDF/Office conversion)
- Key concepts
Files
SKILL.mdcore3,658 bytesSKILL.mdcore3,658 bytesSKILL.mdcore3,658 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-react-native-sdk
When your agent uses it
Nutrient React Native SDK — the @nutrient-sdk/react-native npm package (the legacy `pspdfkit-react-native` package is the pre-rebrand name). PSPDFKit rebranded to Nutrient; the npm package is now @nutrient-sdk/react-native and the main component is NutrientView (not PSPDFKitView). Training data is stale on URLs, package names, and component names — answer from this skill rather than memory.
What it loads into context
Frontmatter
237 tokensAlways available to the agent
SKILL.md
552 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Key Concepts
Files
SKILL.mdcore2,258 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubnutrient-web-sdk
When your agent uses it
Nutrient Web SDK — the @nutrient-sdk/viewer npm package (the legacy `pspdfkit` package is deprecated) for in-browser PDF rendering, annotation, signing, and Nutrient Instant real-time collaboration. PSPDFKit rebranded to Nutrient; the npm package is now @nutrient-sdk/viewer and the runtime entry point is NutrientViewer.load (not PSPDFKit.load). Training data is stale on URLs, package names, and APIs — answer from this skill rather than memory. Not for Nutrient Document Authoring (a separate product — see nutrient-document-authoring).
What it loads into context
Frontmatter
332 tokensAlways available to the agent
SKILL.md
852 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Documentation
- Example Repositories
- Key Concepts
Files
SKILL.mdcore3,695 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubpdf-to-markdown
When your agent uses it
Convert PDF content to structured Markdown for analysis or AI workflows. Use this skill whenever a user needs text or Markdown from a PDF. Use Standard for PDFs with selectable text and Vision for scans or visually complex pages. Use pdf-to-text instead when whitespace and column alignment must be preserved.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
1,209 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules for agents
- Related skills
- Usage
- Workflow
- Offline behavior
- Troubleshooting
- Plans and licensing
Scripts executed separately
bin/nutrientbin/pdf-to-markdown
Files
SKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesSKILL.mdcore5,376 bytesbin/nutrientruns179 bytesbin/pdf-to-markdownruns16,924 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubpdf-to-text
When your agent uses it
Convert PDF content to layout-preserving plain text. Use this skill for tables, invoices, columns, or text-only tools that need whitespace and alignment. Use Standard for PDFs with selectable text and Vision for scans or image-only pages. Use pdf-to-markdown instead when headings, lists, and Markdown tables matter.
What it loads into context
Frontmatter
81 tokensAlways available to the agent
SKILL.md
1,197 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules for agents
- Related skills
- Usage
- Workflow
- Offline behavior
- Troubleshooting
- Plans and licensing
Scripts executed separately
bin/nutrientbin/pdf-to-text
Files
SKILL.mdcore5,293 bytesSKILL.mdcore5,293 bytesSKILL.mdcore5,293 bytesSKILL.mdcore5,293 bytesSKILL.mdcore5,293 bytesSKILL.mdcore5,293 bytesbin/nutrientruns175 bytesbin/pdf-to-textruns16,823 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubquery
When your agent uses it
Search extracted Markdown or plain text with ranked keyword search. Use this skill after pdf-to-markdown or pdf-to-text when you do not know the document's exact wording or a plain grep would return too many matches. For a known term, use a bounded grep first.
What it loads into context
Frontmatter
72 tokensAlways available to the agent
SKILL.md
910 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Rules for agents
- Related skills
- Usage
- Workflow
- Query tips
- Troubleshooting
- Usage and licensing
Scripts executed separately
bin/query
Files
SKILL.mdcore3,784 bytesSKILL.mdcore3,784 bytesSKILL.mdcore3,784 bytesSKILL.mdcore3,784 bytesbin/queryruns16,550 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubremediate-pdf
When your agent uses it
Auto-tag existing PDFs with PDF/UA semantic structure (headings, lists, tables, reading order) for accessibility remediation via the Nutrient DWS Accessibility API. Use when the user wants to make an existing PDF accessible, auto-tag for screen readers, remediate for PDF/UA, or prepare a document for Section 508. Triggers include auto-tag PDF, make this PDF accessible, tag for screen readers, remediate accessibility, PDF/UA remediation, or Section 508 remediation. Auto-tag only: check tagged output with the bundled verify-pdf.py. To generate a NEW accessible PDF from Markdown or HTML, use make-pdf instead. Converting to PDF/A, producing a PDF/UA output target via /build, merging, or signing go to document-processor-api.
What it loads into context
Frontmatter
316 tokensAlways available to the agent
SKILL.md
1,981 tokensWhen the skill is activated
Reference documents
1,725 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use
- Disambiguation from sibling skills
- Setup
- Operations
- Decision rules
- Anti-patterns
- Security Hardening Addendum
- Reference map
Scripts executed separately
scripts/autotag.pyscripts/test_autotag.pyscripts/verify-pdf.pytests/smoke_autotag.py
Files
.gitignoreasset19 bytesSKILL.mdcore7,942 bytesSKILL.mdcore7,942 bytesSKILL.mdcore7,942 bytesSKILL.mdcore7,942 bytesreferences/accessibility-api-reference.mddoc3,884 bytesreferences/pdf-ua-wcag-compliance-notes.mddoc2,815 bytesscripts/autotag.pyruns13,069 bytesscripts/test_autotag.pyruns6,496 bytesscripts/verify-pdf.pyruns14,846 bytestests/fixtures/sample.pdfasset2,021 bytestests/smoke_autotag.pyruns5,348 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubSkills included
- make-pdf
- nutrient-dws-mcp
- ai-gateway
- document-extraction-api
- document-processor-api
- dws-viewer-api
- grounded-rag-ingestion
- nutrient-ai-assistant
- nutrient-android-sdk
- nutrient-document-authoring
- nutrient-document-engine
- nutrient-dotnet-server-sdk
- nutrient-flutter-sdk
- nutrient-ios-sdk
- nutrient-java-server-sdk
- nutrient-maui-sdk
- nutrient-nodejs-server-sdk
- nutrient-python-sdk
- nutrient-react-native-sdk
- nutrient-web-sdk
- pdf-to-markdown
- pdf-to-text
- query
- remediate-pdf
Repository facts
- License
- No license detected
- Created
- Feb 17, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 1
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 49 notes
plugins/make-pdf/skills/make-pdf/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/make-pdf/skills/make-pdf/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/make-pdf/skills/make-pdf/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws-mcp/skills/nutrient-dws-mcp/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/ai-gateway/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/ai-gateway/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/ai-gateway/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/ai-gateway/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-processor-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-processor-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-processor-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-processor-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/document-processor-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 50 dangerous shell commandsin 5 files: pdf-to-markdown/bin/pdf-to-markdown:67 pdf-to-text/bin/pdf-to-text:67 query/bin/query:58 and 2 more
- 437 network referencesin 52 files: dws-viewer-api/scripts/test_viewer_session.py:98 document-extraction-api/scripts/test_extract.py:54 pdf-to-markdown/bin/pdf-to-markdown:6 and 49 more
- No hidden or obfuscated text
- No instruction overrides
- 42 executable scriptsin 42 files: make-pdf/scripts/make-pdf.py:1 make-pdf/scripts/smoke-test.py:1 make-pdf/scripts/verify-pdf.py:1 and 39 more
- 212 references to secretsin 34 files: document-processor-api/references/security-signing-and-forms.md:8 document-extraction-api/scripts/lib/test_common.py:18 dws-viewer-api/scripts/test_viewer_session.py:405 and 31 more
- No requests to vote in Hot
Show all 741 signals by file
.claude-plugin/marketplace.json
plugins/make-pdf/.claude-plugin/plugin.json
- Network accessline 7
"email": "support@nutrient.io" }, "homepage": "https://nutrient.io", - Network accessline 8
}, "homepage": "https://nutrient.io", "repository": "https://github.com/pspdfkit-labs/nutrient-skills", - Network accessline 9
"homepage": "https://nutrient.io", - Network accessline 10
"repository": "https://github.com/pspdfkit-labs/nutrient-skills",
plugins/make-pdf/skills/make-pdf/SKILL.md
plugins/make-pdf/skills/make-pdf/assets/sample/sample.md
- Network accessline 12
This sample exercises the make-pdf pipeline with [Nutrient DWS](https://www.nutrient.io/).
plugins/make-pdf/skills/make-pdf/scripts/make-pdf.py
plugins/make-pdf/skills/make-pdf/scripts/smoke-test.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/make-pdf/skills/make-pdf/scripts/verify-pdf.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/.claude-plugin/plugin.json
- Network accessline 7
"email": "support@nutrient.io" }, "homepage": "https://nutrient.io", - Network accessline 8
}, "homepage": "https://nutrient.io", "repository": "https://github.com/pspdfkit-labs/nutrient-skills", - Network accessline 9
"homepage": "https://nutrient.io", - Network accessline 10
"repository": "https://github.com/pspdfkit-labs/nutrient-skills",
plugins/nutrient-dws/skills/ai-gateway/SKILL.md
- Network accessline 18
author: nutrient-sdk version: "1.0" homepage: "https://www.nutrient.io/api/" - Network accessline 19
version: "1.0" homepage: "https://www.nutrient.io/api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 20
homepage: "https://www.nutrient.io/api/" - Network accessline 21
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 71
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 72
[Credential-related source omitted] - Network accessline 115
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted] - Network accessline 126
[Credential-related source omitted] - Access to secretsline 127
[Credential-related source omitted] - Network accessline 129
useful for trying the cookbooks below before wiring in a live key). - Base URL for `/responses`, `/chat/completions`, `/systemone`, and `/models`: `https://api.nutrient.io/ai/v1`. - Network accessline 130
- Base URL for `/responses`, `/chat/completions`, `/systemone`, and `/models`: `https://api.nutrient.io/ai/v1`. - Never log, echo, or commit the key. Use it only from trusted backend code — not browsers, - Network accessline 131
`https://api.nutrient.io/ai/v1`. - Network accessline 140
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Network accessline 157
[Credential-related source omitted] - Access to secretsline 157
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Network accessline 197
makes sense when you need to decide whether to act at all. - **Invented fields in a request/response.** If the agent references a field or endpoint that doesn't match this skill or the [API reference](https://www.nutrient.io/api/reference - Network accessline 198
- **Invented fields in a request/response.** If the agent references a field or endpoint that doesn't match this skill or the [API reference](https://www.nutrient.io/api/reference/ai-gateway/public/), the skill may be stale — re-fetch i - Network accessline 199
doesn't match this skill or the [API reference](https://www.nutrient.io/api/reference/ai-gateway/public/), - Network accessline 204
- Guides: <https://www.nutrient.io/guides/dws-ai-gateway/> - Network accessline 205
- Full OpenAPI schema: <https://www.nutrient.io/api/reference/ai-gateway/public/openapi.yml> - Network accessline 206
- API keys: <https://dashboard.nutrient.io/ai-gateway/api_keys/>
plugins/nutrient-dws/skills/document-extraction-api/SKILL.md
- Network accessline 16
author: nutrient-sdk version: "1.1" homepage: "https://www.nutrient.io/api/" - Network accessline 17
version: "1.1" homepage: "https://www.nutrient.io/api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 18
homepage: "https://www.nutrient.io/api/" - Network accessline 19
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 65
# From a URL, higher-accuracy mode, persist the run uv run scripts/extract.py --url https://example.com/form.pdf --schema fields.json \ - Network accessline 66
uv run scripts/extract.py --url https://example.com/form.pdf --schema fields.json \ - Network accessline 83
- Get a Nutrient DWS Extract API key at <https://dashboard.nutrient.io/>. - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 96
[Credential-related source omitted]
plugins/nutrient-dws/skills/document-extraction-api/references/extract-output-and-citations.md
plugins/nutrient-dws/skills/document-extraction-api/references/parse-output-filtering.md
- Network accessline 10
- [Document element extraction (spatial output)](https://www.nutrient.io/guides/dws-data-extraction/parsing/extract-document-elements/) — - Network accessline 11
schema for `output.elements`, element types, bounding-box conventions. - [Markdown extraction](https://www.nutrient.io/guides/dws-data-extraction/parsing/extract-markdown/) — shape of `output.markdown`. - Network accessline 12
- [Markdown extraction](https://www.nutrient.io/guides/dws-data-extraction/parsing/extract-markdown/) — - Network accessline 13
shape of `output.markdown`. - [Processing modes](https://www.nutrient.io/guides/dws-data-extraction/parsing/processing-modes/) — which fields each mode populates (e.g. `altDescription` only with - Network accessline 14
- [Processing modes](https://www.nutrient.io/guides/dws-data-extraction/parsing/processing-modes/) — - Network accessline 16
`agentic`; `keyValueRegion` and `formula` only with `understand` or higher). - [Coordinate spaces](https://www.nutrient.io/guides/dws-data-extraction/parsing/coordinate-spaces/) — - Network accessline 17
higher). - [Coordinate spaces](https://www.nutrient.io/guides/dws-data-extraction/parsing/coordinate-spaces/) — how `bounds` relate to `page.width` / `page.height`. - Network accessline 18
- [Coordinate spaces](https://www.nutrient.io/guides/dws-data-extraction/parsing/coordinate-spaces/) —
plugins/nutrient-dws/skills/document-extraction-api/scripts/extract.py
plugins/nutrient-dws/skills/document-extraction-api/scripts/lib/common.py
- Executable scriptline 1
Executable file - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted]
plugins/nutrient-dws/skills/document-extraction-api/scripts/lib/test_common.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 72
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted]
plugins/nutrient-dws/skills/document-extraction-api/scripts/parse.py
plugins/nutrient-dws/skills/document-extraction-api/scripts/test_extract.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 54
def _install_transport(monkeypatch, handler): client = httpx.Client(transport=httpx.MockTransport(handler)) - Network accessline 55
client = httpx.Client(transport=httpx.MockTransport(handler)) - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 136
schema = {"type": "object"} args = E._build_parser().parse_args( ["--url", "https://example.test/doc.pdf", "--schema", "s", "--out", "o"] - Network accessline 137
args = E._build_parser().parse_args( ["--url", "https://example.test/doc.pdf", "--schema", "s", "--out", "o"] ) - Network accessline 138
["--url", "https://example.test/doc.pdf", "--schema", "s", "--out", "o"] - Access to secretsline 298
[Credential-related source omitted] - Network accessline 315
"options": {"includeCitations": False}, } return httpx.Response(200, json=SUCCESS_RESPONSE) - Network accessline 317
return httpx.Response(200, json=SUCCESS_RESPONSE) - Network accessline 350
out_path = tmp_path / "result.json" key = "mock-extract-key" document_url = "https://example.test/invoice.pdf" - Network accessline 351
key = "mock-extract-key" document_url = "https://example.test/invoice.pdf" monkeypatch.setenv("NUTRIENT_EXTRACT_API_KEY", key) - Network accessline 352
document_url = "https://example.test/invoice.pdf" - Access to secretsline 353
[Credential-related source omitted] - Network accessline 366
} assert "file" not in body return httpx.Response(200, json=SUCCESS_RESPONSE) - Network accessline 368
return httpx.Response(200, json=SUCCESS_RESPONSE) - Access to secretsline 402
[Credential-related source omitted] - Network accessline 404
def handler(_request): return httpx.Response( - Network accessline 405
return httpx.Response( - Network accessline 417
[ "--url", "https://example.test/invoice.pdf", - Network accessline 418
"--url", "https://example.test/invoice.pdf", "--schema", - Network accessline 419
"https://example.test/invoice.pdf", - Network accessline 440
[ ( lambda key: httpx.Response(200, text=f"not-json {key}"), - Network accessline 441
( lambda key: httpx.Response(200, text=f"not-json {key}"), "was not valid JSON", - Network accessline 442
lambda key: httpx.Response(200, text=f"not-json {key}"), - Network accessline 444
), ( lambda key: httpx.Response(200, json={"message": f"no output {key}"}), - Network accessline 445
( lambda key: httpx.Response(200, json={"message": f"no output {key}"}), "'output' object", - Network accessline 446
lambda key: httpx.Response(200, json={"message": f"no output {key}"}), - Network accessline 448
), ( lambda key: httpx.Response(200, json={"output": None, "echo": key}), - Network accessline 449
( lambda key: httpx.Response(200, json={"output": None, "echo": key}), "'output' object", - Network accessline 450
lambda key: httpx.Response(200, json={"output": None, "echo": key}), - Access to secretsline 465
[Credential-related source omitted] - Network accessline 474
[ "--url", "https://example.test/invoice.pdf", - Network accessline 475
"--url", "https://example.test/invoice.pdf", "--schema", - Network accessline 476
"https://example.test/invoice.pdf", - Access to secretsline 497
[Credential-related source omitted] - Access to secretsline 500
[Credential-related source omitted] - Access to secretsline 501
[Credential-related source omitted] - Access to secretsline 503
[Credential-related source omitted] - Network accessline 515
[ "--url", "https://example.test/invoice.pdf", - Network accessline 516
"--url", "https://example.test/invoice.pdf", "--schema", - Network accessline 517
"https://example.test/invoice.pdf", - Network accessline 536
"unused.pdf", "--url", "https://example.test/invoice.pdf", - Network accessline 537
"--url", "https://example.test/invoice.pdf", ], - Network accessline 538
"https://example.test/invoice.pdf", - Network accessline 594
[ "--url", "https://example.test/invoice.pdf", - Network accessline 595
"--url", "https://example.test/invoice.pdf", "--schema", - Network accessline 596
"https://example.test/invoice.pdf", - Network accessline 624
[ "--url", "https://example.test/invoice.pdf", - Network accessline 625
"--url", "https://example.test/invoice.pdf", "--schema", - Network accessline 626
"https://example.test/invoice.pdf", - Access to secretsline 681
[Credential-related source omitted] - Network accessline 683
def boom(*_a, **_k): raise httpx.ConnectError(f"failed connecting with header Bearer {key}") - Network accessline 684
raise httpx.ConnectError(f"failed connecting with header Bearer {key}")
plugins/nutrient-dws/skills/document-processor-api/SKILL.md
- Network accessline 11
author: nutrient-sdk version: "2.0" homepage: "https://www.nutrient.io/api/" - Network accessline 12
version: "2.0" homepage: "https://www.nutrient.io/api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 13
homepage: "https://www.nutrient.io/api/" - Network accessline 14
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 23
## Setup - Get a Nutrient DWS API key at <https://dashboard.nutrient.io/sign_up/?product=processor>. - Network accessline 24
- Get a Nutrient DWS API key at <https://dashboard.nutrient.io/sign_up/?product=processor>. - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted]
plugins/nutrient-dws/skills/document-processor-api/assets/nutrient.svg
- Network accessline 1
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
plugins/nutrient-dws/skills/document-processor-api/assets/templates/custom-workflow-template.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/references/REFERENCE.md
- Network accessline 30
- [Processor API overview](https://www.nutrient.io/api/processor-api/) - Network accessline 31
- [General documentation](https://www.nutrient.io/api/documentation/) - Network accessline 32
- [Tools and APIs](https://www.nutrient.io/api/documentation/tools-and-api/) - Network accessline 33
- [API playground](https://dashboard.nutrient.io/processor-api/playground/)
plugins/nutrient-dws/skills/document-processor-api/references/compliance-and-optimization.md
- Network accessline 8
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 43
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 53
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Network accessline 81
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Network accessline 125
- [PDF to PDF/A API](https://www.nutrient.io/api/pdf-to-pdfa-api/) - Network accessline 126
- [PDF/UA auto-tagging API](https://www.nutrient.io/api/pdfua-auto-tagging-api/) - Network accessline 127
- [Optimization API](https://www.nutrient.io/api/document-optimization-api/) - Network accessline 128
- [PDF linearization API](https://www.nutrient.io/api/pdf-linearization-api/)
plugins/nutrient-dws/skills/document-processor-api/references/extraction-and-ocr.md
- Network accessline 8
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 18
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 30
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Network accessline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 59
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Network accessline 99
- [Data extraction overview](https://www.nutrient.io/api/data-extraction-api/) - Network accessline 100
- [Processor API overview](https://www.nutrient.io/api/processor-api/)
plugins/nutrient-dws/skills/document-processor-api/references/generation-and-conversion.md
- Network accessline 10
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 38
[Credential-related source omitted] - Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 43
{ "file": { "url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" - Network accessline 44
"file": { "url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" } - Network accessline 45
"url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" - Network accessline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Network accessline 70
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Network accessline 82
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Network accessline 94
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Network accessline 118
- [PDF generator / converter overview](https://www.nutrient.io/api/pdf-converter-api/) - Network accessline 119
- [URL to PDF API](https://www.nutrient.io/api/url-to-pdf-api/)
plugins/nutrient-dws/skills/document-processor-api/references/pdf-manipulation.md
- Network accessline 10
[Credential-related source omitted] - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Network accessline 30
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Network accessline 95
- [Processor API overview](https://www.nutrient.io/api/processor-api/) - Network accessline 96
- [Tools and APIs](https://www.nutrient.io/api/documentation/tools-and-api/)
plugins/nutrient-dws/skills/document-processor-api/references/request-basics.md
- Network accessline 6
POST https://api.nutrient.io/build - Access to secretsline 7
[Credential-related source omitted] - Network accessline 15
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 25
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 27
[Credential-related source omitted] - Network accessline 30
{ "file": { "url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" - Network accessline 31
"file": { "url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" } - Network accessline 32
"url": "https://www.nutrient.io/api/assets/downloads/samples/docx/document.docx" - Network accessline 73
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Network accessline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Network accessline 117
- [API overview](https://www.nutrient.io/api/documentation/developer-guides/api-overview/) - Network accessline 118
- [Processor API overview](https://www.nutrient.io/api/processor-api/)
plugins/nutrient-dws/skills/document-processor-api/references/security-signing-and-forms.md
- Network accessline 8
[Credential-related source omitted] - Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 34
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Network accessline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 56
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Network accessline 66
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 77
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 87
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Network accessline 141
- [Tools and APIs](https://www.nutrient.io/api/documentation/tools-and-api/)
plugins/nutrient-dws/skills/document-processor-api/scripts/add-pages.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/convert.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/delete-pages.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/duplicate-pages.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/extract-key-value-pairs.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/extract-table.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/extract-text.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/lib/common.py
- Executable scriptline 1
Executable file - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted]
plugins/nutrient-dws/skills/document-processor-api/scripts/merge.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/ocr.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/optimize.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/password-protect.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/redact-ai.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/rotate.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/sign.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/split.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/scripts/watermark-text.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/document-processor-api/tests/testing-guide.md
plugins/nutrient-dws/skills/dws-viewer-api/SKILL.md
- Network accessline 24
author: nutrient-sdk version: "1.0" homepage: "https://www.nutrient.io/api/viewer-api/" - Network accessline 25
version: "1.0" homepage: "https://www.nutrient.io/api/viewer-api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 26
homepage: "https://www.nutrient.io/api/viewer-api/" - Network accessline 27
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Access to secretsline 74
[Credential-related source omitted] - Network accessline 77
- Get a DWS Viewer API key at <https://dashboard.nutrient.io/>. - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted] - Network accessline 136
- Upload: `POST https://api.nutrient.io/viewer/documents`, binary body; response `data.document_id`. - Network accessline 137
- Session: `POST https://api.nutrient.io/viewer/sessions`, body - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 174
[Credential-related source omitted] - Network accessline 193
- Viewer API guides (llms.txt): <https://www.nutrient.io/guides/dws-viewer/llms.txt> - Network accessline 194
- Cross-product index: <https://www.nutrient.io/llms.txt> - Network accessline 195
- Product overview: <https://www.nutrient.io/api/viewer-api/>
plugins/nutrient-dws/skills/dws-viewer-api/references/embed-guide.md
- Network accessline 12
<!-- Pin/verify the version against the current SDK release — see the version note below. --> <script src="https://cdn.cloud.nutrient.io/pspdfkit-web@1.16.1/nutrient-viewer.js"></script> - Network accessline 13
<script src="https://cdn.cloud.nutrient.io/pspdfkit-web@1.16.1/nutrient-viewer.js"></script> - Network accessline 31
The snippet pins `pspdfkit-web@1.16.1` (current at 2026-06-16). This version drifts. Check it against the current SDK release rather than hard-coding it long-term; the CDN host (`https://cdn.cloud.nutrient.io/pspdfkit-web@<version>/nutrient - Network accessline 32
against the current SDK release rather than hard-coding it long-term; the CDN host (`https://cdn.cloud.nutrient.io/pspdfkit-web@<version>/nutrient-viewer.js`) is stable, the version segment is not. - Network accessline 33
(`https://cdn.cloud.nutrient.io/pspdfkit-web@<version>/nutrient-viewer.js`) is stable, the version - Network accessline 53
- Viewer API guides: <https://www.nutrient.io/guides/dws-viewer/llms.txt> - Network accessline 54
- Getting started (CDN snippet, session flow): <https://www.nutrient.io/guides/dws-viewer/getting-started/> - Network accessline 55
- Cross-product index: <https://www.nutrient.io/llms.txt>
plugins/nutrient-dws/skills/dws-viewer-api/references/viewer-decision-matrix.md
- Network accessline 43
| Operation | Endpoint | Notes | |---|---|---| | Upload | `POST https://api.nutrient.io/viewer/documents` | Binary body (`Content-Type: application/octet-stream`) preferred; multipart `file` field also works. Response: `{"data": {"document_ - Network accessline 44
|---|---|---| | Upload | `POST https://api.nutrient.io/viewer/documents` | Binary body (`Content-Type: application/octet-stream`) preferred; multipart `file` field also works. Response: `{"data": {"document_id", "title", "createdAt", "sourc - Network accessline 45
| Upload | `POST https://api.nutrient.io/viewer/documents` | Binary body (`Content-Type: application/octet-stream`) preferred; multipart `file` field also works. Response: `{"data": {"document_id", "title", "createdAt", "sourcePdfSha256", . - Network accessline 46
| List | `GET https://api.nutrient.io/viewer/documents` | `{"data": [{"id", "title", "created_at"}], "next_cursor", "prev_cursor", "document_count"}`. **List item key is `id`, not `document_id`.** | - Network accessline 47
| Delete | `DELETE https://api.nutrient.io/viewer/documents/{id}` | `200 "OK"` (plain text). **Hard and synchronous.** | - Network accessline 48
| Session | `POST https://api.nutrient.io/viewer/sessions` | Body `{allowed_documents: [{document_id, permissions}], exp}` (DWS-managed) or `{}` (app-provided). Response: `201 {"jwt": "<3-segment token>"}`. | - Network accessline 71
- DWS Viewer API overview: <https://www.nutrient.io/api/viewer-api/> - Network accessline 72
- Guides (llms.txt): <https://www.nutrient.io/guides/dws-viewer/llms.txt> - Network accessline 73
- Web SDK: <https://www.nutrient.io/guides/web/llms.txt> - Network accessline 74
- Document Engine: <https://www.nutrient.io/guides/document-engine/> - Network accessline 75
- Cross-product index: <https://www.nutrient.io/llms.txt>
plugins/nutrient-dws/skills/dws-viewer-api/scripts/test_viewer_session.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 98
def _client(handler): return httpx.Client(transport=httpx.MockTransport(handler)) - Network accessline 99
return httpx.Client(transport=httpx.MockTransport(handler)) - Network accessline 106
def handler(request: httpx.Request) -> httpx.Response: captured["body"] = json.loads(request.content) return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 108
return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 121
def handler(request: httpx.Request) -> httpx.Response: captured["body"] = json.loads(request.content) return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 123
return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 132
def handler(request: httpx.Request) -> httpx.Response: assert json.loads(request.content) == {} return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 134
return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 147
def handler(request: httpx.Request) -> httpx.Response: return httpx.Response(201, json={"jwt": jwt}) - Network accessline 148
return httpx.Response(201, json={"jwt": jwt}) - Network accessline 162
def handler(request: httpx.Request) -> httpx.Response: return httpx.Response(201, json={"jwt": jwt}) - Network accessline 163
return httpx.Response(201, json={"jwt": jwt}) - Network accessline 180
calls.append((request.method, request.url.path)) if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 181
if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) if request.method == "POST" and request.url.path == "/viewer/sessions": - Network accessline 182
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 183
if request.method == "POST" and request.url.path == "/viewer/sessions": return httpx.Response(500, text="boom") if request.method == "DELETE": - Network accessline 184
return httpx.Response(500, text="boom") - Network accessline 185
if request.method == "DELETE": return httpx.Response(200, text="OK") return httpx.Response(404) - Network accessline 186
return httpx.Response(200, text="OK") - Network accessline 187
return httpx.Response(404) - Network accessline 198
def _upload_then_session(session_response, delete_response=httpx.Response(200, text="OK")): - Network accessline 203
calls.append((request.method, request.url.path)) if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 204
if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) if request.method == "POST" and request.url.path == "/viewer/sessions": - Network accessline 205
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 208
if request.method == "DELETE": return delete_response return httpx.Response(404) - Network accessline 210
return httpx.Response(404) - Network accessline 217
f = tmp_path / "doc.pdf"; f.write_bytes(b"%PDF-1.4") handler, _ = _upload_then_session(httpx.Response(500, text="boom"), - Network accessline 218
handler, _ = _upload_then_session(httpx.Response(500, text="boom"), - Network accessline 219
delete_response=httpx.Response(500, text="nope")) - Network accessline 230
f = tmp_path / "doc.pdf"; f.write_bytes(b"%PDF-1.4") handler, calls = _upload_then_session(httpx.Response(200, text="<html>gateway</html>")) - Network accessline 231
handler, calls = _upload_then_session(httpx.Response(200, text="<html>gateway</html>")) - Network accessline 241
f = tmp_path / "doc.pdf"; f.write_bytes(b"%PDF-1.4") handler, calls = _upload_then_session(httpx.Response(200, json={"other": "field"})) - Network accessline 242
handler, calls = _upload_then_session(httpx.Response(200, json={"other": "field"})) - Network accessline 250
def test_upload_missing_document_id_exits(capsys): def handler(request: httpx.Request) -> httpx.Response: return httpx.Response(200, json={"data": {}}) # 2xx but no document_id - Network accessline 252
return httpx.Response(200, json={"data": {}}) # 2xx but no document_id - Network accessline 260
def test_session_missing_jwt_exits(capsys): def handler(request: httpx.Request) -> httpx.Response: return httpx.Response(201, json={}) # 2xx but no jwt - Network accessline 262
return httpx.Response(201, json={}) # 2xx but no jwt - Network accessline 274
def handler(request: httpx.Request) -> httpx.Response: return httpx.Response(401, text=f"unauthorized for key {key}") - Network accessline 275
return httpx.Response(401, text=f"unauthorized for key {key}") - Network accessline 315
def handler(request: httpx.Request) -> httpx.Response: calls.append(request.method) return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 317
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 341
def ok(request: httpx.Request) -> httpx.Response: return httpx.Response(200, text="OK") - Network accessline 342
return httpx.Response(200, text="OK") - Network accessline 348
def gone(request: httpx.Request) -> httpx.Response: return httpx.Response(404, text="Document not found") - Network accessline 349
return httpx.Response(404, text="Document not found") - Network accessline 364
calls.append((request.method, request.url.path)) if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 365
if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) if request.method == "POST" and request.url.path == "/viewer/sessions": - Network accessline 366
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 367
if request.method == "POST" and request.url.path == "/viewer/sessions": raise httpx.ConnectTimeout("simulated network failure") if request.method == "DELETE": - Network accessline 368
raise httpx.ConnectTimeout("simulated network failure") - Network accessline 369
if request.method == "DELETE": return httpx.Response(200, text="OK") return httpx.Response(404) - Network accessline 370
return httpx.Response(200, text="OK") - Network accessline 371
return httpx.Response(404) - Network accessline 385
def handler(request: httpx.Request) -> httpx.Response: captured["raw"] = request.url.raw_path.decode() return httpx.Response(200, text="OK") - Network accessline 387
return httpx.Response(200, text="OK") - Access to secretsline 405
[Credential-related source omitted] - Access to secretsline 406
[Credential-related source omitted] - Access to secretsline 407
[Credential-related source omitted] - Access to secretsline 411
[Credential-related source omitted] - Access to secretsline 417
[Credential-related source omitted] - Access to secretsline 425
[Credential-related source omitted] - Access to secretsline 426
[Credential-related source omitted] - Access to secretsline 427
[Credential-related source omitted] - Access to secretsline 431
[Credential-related source omitted] - Access to secretsline 436
[Credential-related source omitted] - Access to secretsline 438
[Credential-related source omitted] - Access to secretsline 439
[Credential-related source omitted] - Access to secretsline 444
[Credential-related source omitted] - Network accessline 479
f = tmp_path / "doc.pdf" f.write_bytes(b"%PDF-1.4 minimal") handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "a.b.c"})) - Network accessline 481
handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "a.b.c"})) - Network accessline 499
calls.append((request.method, request.url.path)) if request.method == "DELETE": return httpx.Response(200, text="OK") - Network accessline 500
if request.method == "DELETE": return httpx.Response(200, text="OK") return httpx.Response(404) - Network accessline 501
return httpx.Response(200, text="OK") - Network accessline 502
return httpx.Response(404) - Network accessline 522
calls.append((request.method, request.url.path)) if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 523
if request.method == "POST" and request.url.path == "/viewer/documents": return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) if request.method == "POST" and request.url.path == "/viewer/sessions": - Network accessline 524
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 525
if request.method == "POST" and request.url.path == "/viewer/sessions": raise httpx.ConnectError("connection reset") # -> deliberate session-errored cleanup path if request.method == "DELETE": - Network accessline 526
raise httpx.ConnectError("connection reset") # -> deliberate session-errored cleanup path - Network accessline 527
if request.method == "DELETE": return httpx.Response(200, text="OK") return httpx.Response(404) - Network accessline 528
return httpx.Response(200, text="OK") - Network accessline 529
return httpx.Response(404) - Network accessline 547
def handler(request): return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 548
return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 558
f = tmp_path / "doc.pdf" f.write_bytes(b"%PDF-1.4 minimal") handler, calls = _upload_then_session(httpx.Response(200, json={"jwt": {"nested": "oops"}})) - Network accessline 559
f.write_bytes(b"%PDF-1.4 minimal") handler, calls = _upload_then_session(httpx.Response(200, json={"jwt": {"nested": "oops"}})) with _client(handler) as c, pytest.raises(SystemExit) as e: - Network accessline 560
handler, calls = _upload_then_session(httpx.Response(200, json={"jwt": {"nested": "oops"}})) - Network accessline 577
if request.method == "POST" and request.url.path == "/viewer/documents": seen["upload_ct"] = request.headers.get("Content-Type") return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 578
seen["upload_ct"] = request.headers.get("Content-Type") return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) if request.method == "POST" and request.url.path == "/viewer/sessions": - Network accessline 579
return httpx.Response(200, json={"data": {"document_id": "DOC1"}}) - Network accessline 580
if request.method == "POST" and request.url.path == "/viewer/sessions": seen["session_body"] = json.loads(request.content) return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 581
seen["session_body"] = json.loads(request.content) return httpx.Response(201, json={"jwt": "a.b.c"}) return httpx.Response(404) - Network accessline 582
return httpx.Response(201, json={"jwt": "a.b.c"}) - Network accessline 583
return httpx.Response(404) - Network accessline 603
dest = tmp_path / "jwt.txt" f = tmp_path / "doc.pdf"; f.write_bytes(b"%PDF-1.4") handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "a.b.c"})) - Network accessline 605
handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "a.b.c"})) - Network accessline 625
f = tmp_path / "doc.pdf"; f.write_bytes(b"%PDF-1.4") handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "SECRETJWT"})) - Network accessline 626
handler, calls = _upload_then_session(httpx.Response(201, json={"jwt": "SECRETJWT"})) - Network accessline 645
[Credential-related source omitted] - Network accessline 646
[Credential-related source omitted] - Network accessline 659
[Credential-related source omitted] - Network accessline 660
[Credential-related source omitted]
plugins/nutrient-dws/skills/dws-viewer-api/scripts/viewer-session.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Network accessline 37
BASE_URL = "https://api.nutrient.io" - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 447
[Credential-related source omitted] - Access to secretsline 490
[Credential-related source omitted] - Network accessline 521
with httpx.Client(timeout=180) as client:
plugins/nutrient-dws/skills/dws-viewer-api/tests/smoke-test-guide.md
- Access to secretsline 3
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Dangerous shell operationline 50
rm -f /tmp/viewer.jwt - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Network accessline 99
[Credential-related source omitted] - Access to secretsline 99
[Credential-related source omitted] - Network accessline 100
[Credential-related source omitted] - Network accessline 101
BASE = "https://api.nutrient.io/viewer/documents" DOC_IDS = ["<id from step 2>", "<id from step 4>"] # fill in listing = httpx.get(BASE, headers=H, timeout=60).json() - Network accessline 102
DOC_IDS = ["<id from step 2>", "<id from step 4>"] # fill in listing = httpx.get(BASE, headers=H, timeout=60).json() present = {d["id"] for d in listing.get("data", [])} - Network accessline 103
listing = httpx.get(BASE, headers=H, timeout=60).json()
plugins/nutrient-dws/skills/dws-viewer-api/tests/smoke_viewer.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-dws/skills/grounded-rag-ingestion/SKILL.md
- Network accessline 16
author: nutrient-sdk version: "1.0" homepage: "https://www.nutrient.io/api/data-extraction-api/" - Network accessline 17
version: "1.0" homepage: "https://www.nutrient.io/api/data-extraction-api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 18
homepage: "https://www.nutrient.io/api/data-extraction-api/" - Network accessline 19
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 74
- Get a Nutrient DWS Extract API key at <https://dashboard.nutrient.io/>. - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted]
plugins/nutrient-dws/skills/grounded-rag-ingestion/examples/embed-chunks-illustrative.py
plugins/nutrient-dws/skills/grounded-rag-ingestion/scripts/chunk.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 483
[Credential-related source omitted] - Access to secretsline 485
[Credential-related source omitted]
plugins/nutrient-dws/skills/grounded-rag-ingestion/scripts/test_chunk.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 276
[Credential-related source omitted] - Access to secretsline 277
[Credential-related source omitted] - Access to secretsline 278
[Credential-related source omitted] - Access to secretsline 292
[Credential-related source omitted] - Access to secretsline 296
[Credential-related source omitted] - Network accessline 300
def test_remote_url_rejected(): r = _run(["--input", "https://example.com/x.pdf", "--out", "-"], - Network accessline 301
r = _run(["--input", "https://example.com/x.pdf", "--out", "-"], - Access to secretsline 302
[Credential-related source omitted] - Access to secretsline 320
[Credential-related source omitted]
plugins/nutrient-dws/skills/grounded-rag-ingestion/tests/fixtures/make_sample.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/nutrient-sdk-dev/.claude-plugin/plugin.json
- Network accessline 7
"email": "support@nutrient.io" }, "homepage": "https://nutrient.io", - Network accessline 8
}, "homepage": "https://nutrient.io", "repository": "https://github.com/pspdfkit-labs/nutrient-skills", - Network accessline 9
"homepage": "https://nutrient.io", - Network accessline 10
"repository": "https://github.com/pspdfkit-labs/nutrient-skills",
plugins/nutrient-sdk-dev/skills/nutrient-ai-assistant/SKILL.md
- Access to secretsline 4
[Credential-related source omitted] - Network accessline 15
- API reference: https://www.nutrient.io/api/ai-assistant/llms.txt - Network accessline 16
- Guides: https://www.nutrient.io/guides/ai-assistant/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Access to secretsline 24
[Credential-related source omitted]
plugins/nutrient-sdk-dev/skills/nutrient-android-sdk/SKILL.md
- Network accessline 15
- API reference: https://www.nutrient.io/api/android/llms.txt - Network accessline 16
- Guides: https://www.nutrient.io/guides/android/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 21
- Android simple example (PDF viewing and annotation): https://github.com/PSPDFKit/pspdfkit-android-simple-example - Network accessline 25
- **Maven artifact**: `io.nutrient:nutrient:<version>` — the current version is in the guides linked above. The historical `com.pspdfkit:pspdfkit` coordinates are pre-rebrand. - **Maven repository**: `https://my.nutrient.io/maven` — custom - Network accessline 26
- **Maven repository**: `https://my.nutrient.io/maven` — custom repo (not Maven Central); add it to `settings.gradle` (or root `build.gradle`).
plugins/nutrient-sdk-dev/skills/nutrient-document-authoring/SKILL.md
- Network accessline 15
- API reference: https://www.nutrient.io/api/document-authoring/llms.txt - Network accessline 16
- Guides: https://www.nutrient.io/guides/document-authoring/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 21
- https://document-authoring-demo.pspdfkit.com/sample/
plugins/nutrient-sdk-dev/skills/nutrient-document-engine/SKILL.md
- Access to secretsline 3
[Credential-related source omitted] - Network accessline 15
- Guides: https://www.nutrient.io/guides/document-engine/llms.txt - Network accessline 16
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 20
- Node.js + Docker Compose (Nutrient Document Engine + Nutrient Web SDK): https://github.com/PSPDFKit/pspdfkit-server-example-nodejs - Network accessline 21
- Rails + Docker Compose (Nutrient Document Engine + Nutrient Web SDK): https://github.com/PSPDFKit/pspdfkit-server-example-rails - Network accessline 22
- Web examples catalog with Nutrient Document Engine (dashboard at localhost:5000): https://github.com/PSPDFKit/pspdfkit-web-examples-catalog - Network accessline 23
- MCP server exposing Nutrient Document Engine capabilities to AI agents: https://github.com/PSPDFKit/nutrient-document-engine-mcp-server
plugins/nutrient-sdk-dev/skills/nutrient-dotnet-server-sdk/SKILL.md
- Network accessline 15
- API reference: https://www.nutrient.io/api/gdpicture/llms.txt (the API dump is served under the legacy `gdpicture` path, not `dotnet` — see Heritage below) - Network accessline 16
- Guides: https://www.nutrient.io/guides/dotnet/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt
plugins/nutrient-sdk-dev/skills/nutrient-flutter-sdk/SKILL.md
plugins/nutrient-sdk-dev/skills/nutrient-ios-sdk/SKILL.md
- Network accessline 15
- API reference: https://www.nutrient.io/api/ios/llms.txt - Network accessline 16
- Guides: https://www.nutrient.io/guides/ios/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 21
- Catalog (PDFView, view controller, industry customizations): https://github.com/PSPDFKit/pspdfkit-ios-catalog - Network accessline 25
- **Swift Package Manager**: add `https://github.com/PSPDFKit/PSPDFKit-SP` as the package URL — the repo name remains `PSPDFKit-SP` post-rebrand. - Network accessline 26
- **CocoaPods**: https://www.nutrient.io/sdk/ios/getting-started/ios-cocoapods.md
plugins/nutrient-sdk-dev/skills/nutrient-java-server-sdk/SKILL.md
plugins/nutrient-sdk-dev/skills/nutrient-maui-sdk/SKILL.md
plugins/nutrient-sdk-dev/skills/nutrient-nodejs-server-sdk/SKILL.md
plugins/nutrient-sdk-dev/skills/nutrient-python-sdk/SKILL.md
- Network accessline 15
- Guides: https://www.nutrient.io/guides/python/llms.txt - Network accessline 16
- API reference: https://www.nutrient.io/api/python/ — no `llms.txt`; instead every API page has a Markdown variant. Take any page URL, drop the trailing slash, append `.md` (e.g. `https://www.nutrient.io/api/python/document.md`). - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt
plugins/nutrient-sdk-dev/skills/nutrient-react-native-sdk/SKILL.md
- Network accessline 15
- API reference: https://www.nutrient.io/api/react-native/llms.txt - Network accessline 16
- Guides: https://www.nutrient.io/guides/react-native/llms.txt - Network accessline 17
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 21
- Official React Native examples and the React Native + Expo integration guide live under the [PSPDFKit GitHub org](https://github.com/PSPDFKit).
plugins/nutrient-sdk-dev/skills/nutrient-web-sdk/SKILL.md
- Network accessline 18
- API reference: https://www.nutrient.io/api/web/llms.txt - Network accessline 19
- Guides: https://www.nutrient.io/guides/web/llms.txt - Network accessline 20
- Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt - Network accessline 26
- React integration: https://github.com/PSPDFKit/pspdfkit-web-example-react - Network accessline 27
- Multi-framework catalog (React, Vue, Angular, vanilla JS) with Docker Compose: https://github.com/PSPDFKit/pspdfkit-web-examples-catalog
plugins/pdf-to-markdown/skills/pdf-to-markdown/SKILL.md
- Access to secretsline 78
[Credential-related source omitted] - Network accessline 104
- **Empty or minimal output:** The PDF may be scanned or image-only. Offer Vision. - **Vision asks for sign-in:** Show the CLI message and ask the user to run `$SKILL_DIR/bin/nutrient auth login`. Do not retry first. - **No Vision pages rem - Network accessline 105
- **Vision asks for sign-in:** Show the CLI message and ask the user to run `$SKILL_DIR/bin/nutrient auth login`. Do not retry first. - **No Vision pages remain:** Show the CLI message and the [pricing page](https://www.nutrient.io/api/pric - Network accessline 106
- **No Vision pages remain:** Show the CLI message and the [pricing page](https://www.nutrient.io/api/pricing/pdf-to-markdown/). Do not retry or change account state. - Network accessline 113
Standard conversion is free. With an account or API key, Vision uses the account's monthly allowance. Nutrient CLI license keys keep their existing terms. See [current plans](https://www.nutrient.io/api/pricing/pdf-to-markdown/). - Network accessline 115
Use is subject to the [Nutrient PDF to Markdown License](https://github.com/PSPDFKit/pdf-to-markdown/blob/main/LICENSE.md) and Nutrient's [Privacy Policy](https://www.nutrient.io/legal/privacy/). Redistribution, OEM, embedded, and white-lab
plugins/pdf-to-markdown/skills/pdf-to-markdown/bin/nutrient
- Executable scriptline 1
#!/bin/sh
plugins/pdf-to-markdown/skills/pdf-to-markdown/bin/pdf-to-markdown
- Executable scriptline 1
#!/bin/sh - Network accessline 6
STATE_FILE="${STATE_DIR}/pdf-to-markdown-state" CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 7
CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Network accessline 8
LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 9
CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Dangerous shell operationline 67
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 84
rm -rf "$OLD_INSTALL_DIR" || : - Dangerous shell operationline 88
[ -z "$ARCHIVE_TMP" ] || rm -f "$ARCHIVE_TMP" || : - Dangerous shell operationline 89
[ -z "$CHECKSUM_TMP" ] || rm -f "$CHECKSUM_TMP" || : - Dangerous shell operationline 90
[ -z "$EXTRACT_TMP" ] || rm -rf "$EXTRACT_TMP" || : - Dangerous shell operationline 91
[ -z "$NEXT_INSTALL_DIR" ] || rm -rf "$NEXT_INSTALL_DIR" || : - Dangerous shell operationline 103
[ -z "$STATE_TMP" ] || rm -f "$STATE_TMP" || : - Dangerous shell operationline 104
[ -z "$VERB_LINK_TMP" ] || rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 139
rm -f "$STATE_TMP" || : - Dangerous shell operationline 145
rm -f "$STATE_TMP" || : - Network accessline 159
if command -v curl >/dev/null 2>&1; then - Network accessline 160
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 165
if command -v wget >/dev/null 2>&1; then - Network accessline 166
wget -q --https-only --timeout=30 --tries=2 -O - "$url" || return 1 - Network accessline 170
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 179
if command -v curl >/dev/null 2>&1; then - Network accessline 180
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 186
if command -v wget >/dev/null 2>&1; then - Network accessline 187
wget -q --https-only --timeout=30 --tries=2 \ - Network accessline 192
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 196
fetch_latest_release_id() { latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 197
latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 209
case "$release_id" in [!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Network accessline 210
[!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; esac - Network accessline 211
*) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Dangerous shell operationline 357
rm -rf "$NEXT_INSTALL_DIR" || { - Dangerous shell operationline 410
rm -rf "$OLD_INSTALL_DIR" || { - Dangerous shell operationline 448
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 622
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 624
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 631
rm -f "$VERB_LINK_TMP" || :
plugins/pdf-to-text/skills/pdf-to-text/SKILL.md
- Access to secretsline 68
[Credential-related source omitted] - Network accessline 94
- **Empty or minimal output:** The PDF may be scanned or image-only. Offer Vision. - **Vision asks for sign-in:** Show the CLI message and ask the user to run `$SKILL_DIR/bin/nutrient auth login`. Do not retry first. - **No Vision pages rem - Network accessline 95
- **Vision asks for sign-in:** Show the CLI message and ask the user to run `$SKILL_DIR/bin/nutrient auth login`. Do not retry first. - **No Vision pages remain:** Show the CLI message and the [pricing page](https://www.nutrient.io/api/pric - Network accessline 96
- **No Vision pages remain:** Show the CLI message and the [pricing page](https://www.nutrient.io/api/pricing/pdf-to-markdown/). Do not retry or change account state. - Network accessline 104
Standard conversion is free. With an account or API key, Vision uses the account's monthly allowance. Nutrient CLI license keys keep their existing terms. See [current plans](https://www.nutrient.io/api/pricing/pdf-to-markdown/). - Network accessline 106
Use is subject to the [Nutrient PDF to Markdown License](https://github.com/PSPDFKit/pdf-to-markdown/blob/main/LICENSE.md) and Nutrient's [Privacy Policy](https://www.nutrient.io/legal/privacy/). Redistribution, OEM, embedded, and white-lab
plugins/pdf-to-text/skills/pdf-to-text/bin/nutrient
- Executable scriptline 1
#!/bin/sh
plugins/pdf-to-text/skills/pdf-to-text/bin/pdf-to-text
- Executable scriptline 1
#!/bin/sh - Network accessline 6
STATE_FILE="${STATE_DIR}/pdf-to-markdown-state" CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 7
CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Network accessline 8
LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 9
CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Dangerous shell operationline 67
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 84
rm -rf "$OLD_INSTALL_DIR" || : - Dangerous shell operationline 88
[ -z "$ARCHIVE_TMP" ] || rm -f "$ARCHIVE_TMP" || : - Dangerous shell operationline 89
[ -z "$CHECKSUM_TMP" ] || rm -f "$CHECKSUM_TMP" || : - Dangerous shell operationline 90
[ -z "$EXTRACT_TMP" ] || rm -rf "$EXTRACT_TMP" || : - Dangerous shell operationline 91
[ -z "$NEXT_INSTALL_DIR" ] || rm -rf "$NEXT_INSTALL_DIR" || : - Dangerous shell operationline 103
[ -z "$STATE_TMP" ] || rm -f "$STATE_TMP" || : - Dangerous shell operationline 104
[ -z "$VERB_LINK_TMP" ] || rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 139
rm -f "$STATE_TMP" || : - Dangerous shell operationline 145
rm -f "$STATE_TMP" || : - Network accessline 159
if command -v curl >/dev/null 2>&1; then - Network accessline 160
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 165
if command -v wget >/dev/null 2>&1; then - Network accessline 166
wget -q --https-only --timeout=30 --tries=2 -O - "$url" || return 1 - Network accessline 170
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 179
if command -v curl >/dev/null 2>&1; then - Network accessline 180
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 186
if command -v wget >/dev/null 2>&1; then - Network accessline 187
wget -q --https-only --timeout=30 --tries=2 \ - Network accessline 192
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 196
fetch_latest_release_id() { latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 197
latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 209
case "$release_id" in [!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Network accessline 210
[!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; esac - Network accessline 211
*) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Dangerous shell operationline 357
rm -rf "$NEXT_INSTALL_DIR" || { - Dangerous shell operationline 410
rm -rf "$OLD_INSTALL_DIR" || { - Dangerous shell operationline 448
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 620
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 622
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 629
rm -f "$VERB_LINK_TMP" || :
plugins/query/skills/query/SKILL.md
- Network accessline 81
Use is subject to the [Nutrient PDF to Markdown License](https://github.com/PSPDFKit/pdf-to-markdown/blob/main/LICENSE.md) and Nutrient's [Privacy Policy](https://www.nutrient.io/legal/privacy/). Redistribution, OEM, embedded, and white-lab
plugins/query/skills/query/bin/query
- Executable scriptline 1
#!/bin/sh - Network accessline 6
STATE_FILE="${STATE_DIR}/pdf-to-markdown-state" CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 7
CHECK_INTERVAL_SECONDS=21600 LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Network accessline 8
LATEST_URL="https://agent-cdn.nutrient.io/pdf-to-markdown/LATEST" - Network accessline 9
CDN_PREFIX="https://agent-cdn.nutrient.io/pdf-to-markdown" - Dangerous shell operationline 58
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 75
rm -rf "$OLD_INSTALL_DIR" || : - Dangerous shell operationline 79
[ -z "$ARCHIVE_TMP" ] || rm -f "$ARCHIVE_TMP" || : - Dangerous shell operationline 80
[ -z "$CHECKSUM_TMP" ] || rm -f "$CHECKSUM_TMP" || : - Dangerous shell operationline 81
[ -z "$EXTRACT_TMP" ] || rm -rf "$EXTRACT_TMP" || : - Dangerous shell operationline 82
[ -z "$NEXT_INSTALL_DIR" ] || rm -rf "$NEXT_INSTALL_DIR" || : - Dangerous shell operationline 94
[ -z "$STATE_TMP" ] || rm -f "$STATE_TMP" || : - Dangerous shell operationline 95
[ -z "$VERB_LINK_TMP" ] || rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 130
rm -f "$STATE_TMP" || : - Dangerous shell operationline 136
rm -f "$STATE_TMP" || : - Network accessline 150
if command -v curl >/dev/null 2>&1; then - Network accessline 151
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 156
if command -v wget >/dev/null 2>&1; then - Network accessline 157
wget -q --https-only --timeout=30 --tries=2 -O - "$url" || return 1 - Network accessline 161
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 170
if command -v curl >/dev/null 2>&1; then - Network accessline 171
curl -fsSL --proto '=https' --proto-redir '=https' \ - Network accessline 177
if command -v wget >/dev/null 2>&1; then - Network accessline 178
wget -q --https-only --timeout=30 --tries=2 \ - Network accessline 183
echo "Neither curl nor wget is available for downloading files" >&2 - Network accessline 187
fetch_latest_release_id() { latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 188
latest="$(download_to_stdout "$LATEST_URL")" || return 1 - Network accessline 200
case "$release_id" in [!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Network accessline 201
[!A-Za-z0-9]*|*[!A-Za-z0-9T._-]*|'') return 1 ;; *) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; esac - Network accessline 202
*) printf '%s/%s/%s.tar.gz' "$CDN_PREFIX" "$release_id" "$TARGET_ID" ;; - Dangerous shell operationline 348
rm -rf "$NEXT_INSTALL_DIR" || { - Dangerous shell operationline 401
rm -rf "$OLD_INSTALL_DIR" || { - Dangerous shell operationline 439
rm -rf "$INSTALL_LOCK_PATH" || return 1 - Dangerous shell operationline 617
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 619
rm -f "$VERB_LINK_TMP" || : - Dangerous shell operationline 626
rm -f "$VERB_LINK_TMP" || :
plugins/remediate-pdf/.claude-plugin/plugin.json
- Network accessline 7
"email": "support@nutrient.io" }, "homepage": "https://nutrient.io", - Network accessline 8
}, "homepage": "https://nutrient.io", "repository": "https://github.com/pspdfkit-labs/nutrient-skills", - Network accessline 9
"homepage": "https://nutrient.io", - Network accessline 10
"repository": "https://github.com/pspdfkit-labs/nutrient-skills",
plugins/remediate-pdf/skills/remediate-pdf/SKILL.md
- Network accessline 14
author: nutrient-sdk version: "1.0" homepage: "https://www.nutrient.io/api/accessibility-api/" - Network accessline 15
version: "1.0" homepage: "https://www.nutrient.io/api/accessibility-api/" repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Network accessline 16
homepage: "https://www.nutrient.io/api/accessibility-api/" - Network accessline 17
repository: "https://github.com/PSPDFKit-labs/nutrient-skills" - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 72
- Get a DWS Accessibility API key at <https://dashboard.nutrient.io/>. - Access to secretsline 73
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Network accessline 87
uv run scripts/autotag.py --input doc.pdf --output doc-tagged.pdf uv run scripts/autotag.py --url https://example.com/doc.pdf --output doc-tagged.pdf - Network accessline 88
uv run scripts/autotag.py --url https://example.com/doc.pdf --output doc-tagged.pdf - Network accessline 91
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted]
plugins/remediate-pdf/skills/remediate-pdf/references/accessibility-api-reference.md
- Network accessline 8
- **`POST https://api.nutrient.io/accessibility/autotag`** - Access to secretsline 10
[Credential-related source omitted] - Network accessline 11
missing/empty key → `401`; a wrong-product (Processor/Extraction) key → `401`. - **Input:** local file as `multipart/form-data` with field name `file`; or a remote PDF as a JSON body `{"file": {"url": "https://..."}}`. - Network accessline 12
- **Input:** local file as `multipart/form-data` with field name `file`; or a remote PDF as a JSON body `{"file": {"url": "https://..."}}`. - **Output:** the remediated PDF binary, `Content-Type: application/pdf`. - Network accessline 13
JSON body `{"file": {"url": "https://..."}}`. - Network accessline 36
{"error":{"details":"Forbidden","requestId":"...","status":403,"supportUrl":"https://www.nutrient.io/api/support/"}}
plugins/remediate-pdf/skills/remediate-pdf/scripts/autotag.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 8
POSTs to https://api.nutrient.io/accessibility/autotag (multipart for local files, JSON body - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 31
AUTOTAG_URL = "https://api.nutrient.io/accessibility/autotag" - Access to secretsline 166
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Network accessline 230
[Credential-related source omitted] - Network accessline 231
async with httpx.AsyncClient(timeout=180) as client:
plugins/remediate-pdf/skills/remediate-pdf/scripts/test_autotag.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 62
def test_url_requires_https(): for bad in ["http://example.com/x.pdf", "ftp://example.com/x.pdf"]: - Network accessline 63
for bad in ["http://example.com/x.pdf", "ftp://example.com/x.pdf"]: - Network accessline 71
def test_url_rejects_localhost_and_private(): for bad in ["https://localhost/x.pdf", "https://127.0.0.1/x.pdf", "https://10.0.0.1/x.pdf"]: - Network accessline 72
for bad in ["https://localhost/x.pdf", "https://127.0.0.1/x.pdf", "https://10.0.0.1/x.pdf"]: - Network accessline 80
def test_url_accepts_public_ip_literal(): A.validate_remote_url("https://8.8.8.8/x.pdf") # public, should not raise - Network accessline 81
A.validate_remote_url("https://8.8.8.8/x.pdf") # public, should not raise - Access to secretsline 125
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Access to secretsline 145
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 156
[Credential-related source omitted] - Network accessline 160
[Credential-related source omitted] - Network accessline 161
[Credential-related source omitted] - Access to secretsline 161
[Credential-related source omitted] - Network accessline 165
def test_input_and_url_mutually_exclusive(): r = _run(["--input", "a.pdf", "--url", "https://x/y.pdf"], - Network accessline 166
r = _run(["--input", "a.pdf", "--url", "https://x/y.pdf"], - Access to secretsline 167
[Credential-related source omitted]
plugins/remediate-pdf/skills/remediate-pdf/scripts/verify-pdf.py
- Executable scriptline 1
#!/usr/bin/env python3
plugins/remediate-pdf/skills/remediate-pdf/tests/smoke_autotag.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 7
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Access to secrets in prose of the SKILL.mdmake-pdf/SKILL.md:15Low confidence
- Access to secrets in prose of the SKILL.mdmake-pdf/SKILL.md:83Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuemake-pdf/SKILL.md:88Low confidence
- Network access in prose of documentationmake-pdf/assets/sample/sample.md:12Low confidence
- Executable script in code of a file that runsmake-pdf/scripts/make-pdf.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuemake-pdf/scripts/make-pdf.py:269Low confidence
- Access to secrets in code of a file that runsmake-pdf/scripts/make-pdf.py:270High confidence
- Access to secrets in code of a file that runsmake-pdf/scripts/make-pdf.py:272High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuemake-pdf/scripts/make-pdf.py:282Low confidence
- Executable script in code of a file that runsmake-pdf/scripts/smoke-test.py:1High confidence
- Executable script in code of a file that runsmake-pdf/scripts/verify-pdf.py:1High confidence
- Network access in the frontmatter of the SKILL.mdai-gateway/SKILL.md:18Low confidence
- Network access in the frontmatter of the SKILL.mdai-gateway/SKILL.md:19Low confidence
- Network access in the frontmatter of the SKILL.mdai-gateway/SKILL.md:20Low confidence
- Network access in the frontmatter of the SKILL.mdai-gateway/SKILL.md:21Low confidence
- Network access in code of the SKILL.mdai-gateway/SKILL.md:71High confidence
- Access to secrets in code of the SKILL.mdai-gateway/SKILL.md:71High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueai-gateway/SKILL.md:72Low confidence
- Network access in code of the SKILL.mdai-gateway/SKILL.md:115High confidence
- Access to secrets in code of the SKILL.mdai-gateway/SKILL.md:115High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueai-gateway/SKILL.md:116Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:126Low confidence
- Access to secrets in prose of the SKILL.mdai-gateway/SKILL.md:127Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:129Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:130Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:131Low confidence
- Network access in code of the SKILL.mdai-gateway/SKILL.md:140High confidence
- Access to secrets in code of the SKILL.mdai-gateway/SKILL.md:140High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueai-gateway/SKILL.md:141Low confidence
- Network access in code of the SKILL.mdai-gateway/SKILL.md:157High confidence
- Access to secrets in code of the SKILL.mdai-gateway/SKILL.md:157High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueai-gateway/SKILL.md:158Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:197Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:198Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:199Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:204Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:205Low confidence
- Network access in prose of the SKILL.mdai-gateway/SKILL.md:206Low confidence
- Network access in the frontmatter of the SKILL.mddocument-extraction-api/SKILL.md:16Low confidence
- Network access in the frontmatter of the SKILL.mddocument-extraction-api/SKILL.md:17Low confidence
- Network access in the frontmatter of the SKILL.mddocument-extraction-api/SKILL.md:18Low confidence
- Network access in the frontmatter of the SKILL.mddocument-extraction-api/SKILL.md:19Low confidence
- Network access in code of the SKILL.mddocument-extraction-api/SKILL.md:65High confidence
- Network access in code of the SKILL.mddocument-extraction-api/SKILL.md:66High confidence
- Network access in prose of the SKILL.mddocument-extraction-api/SKILL.md:83Low confidence
- Access to secrets in prose of the SKILL.mddocument-extraction-api/SKILL.md:84Low confidence
- Access to secrets in code of the SKILL.mddocument-extraction-api/SKILL.md:86High confidence
- Access to secrets in prose of the SKILL.mddocument-extraction-api/SKILL.md:95Low confidence
- Access to secrets in prose of the SKILL.mddocument-extraction-api/SKILL.md:96Low confidence
- Network access in prose of documentationdocument-extraction-api/references/extract-output-and-citations.md:42Low confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.