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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
18GitHub stars
0stars in 7 days
24skills in this repository
7commits in 30 days

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

Oct 25, 2026Oct 25, 202618

30-day change not yet available: not enough history.

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

2,044 tokens

When the skill is activated

Reference documents

291 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Quick Start
  2. Common Tasks
  3. Input Rules
  4. Verification (built in)
  5. Batch Conversion
  6. Layout Honesty (Chromium limits)
  7. Chaining Other Document Operations
  8. Implementation Rules
  9. Validation

Scripts executed separately

  • scripts/make-pdf.py
  • scripts/smoke-test.py
  • scripts/verify-pdf.py

Files

  • ../../../../.claude-plugin/marketplace.jsonasset4,504 bytes
  • ../../.claude-plugin/plugin.jsonasset511 bytes
  • SKILL.mdcore8,483 bytes
  • SKILL.mdcore8,483 bytes
  • SKILL.mdcore8,483 bytes
  • SKILL.mdcore8,483 bytes
  • assets/sample/sample.mddoc1,211 bytes
  • assets/templates/document.htmlasset429 bytes
  • assets/templates/memo.htmlasset482 bytes
  • assets/themes/dark.cssasset2,234 bytes
  • assets/themes/light.cssasset2,235 bytes
  • scripts/make-pdf.pyruns23,180 bytes
  • scripts/smoke-test.pyruns11,994 bytes
  • scripts/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/make-pdf/skills/make-pdf/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/make-pdf/skills/make-pdf/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws-mcp/skills/nutrient-dws-mcp/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/ai-gateway/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/ai-gateway/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/ai-gateway/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/ai-gateway/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-extraction-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-processor-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-processor-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-processor-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-processor-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/document-processor-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/nutrient-dws/skills/dws-viewer-api/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 741 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  • Network accessline 2
    "$schema": "https://anthropic.com/claude-code/marketplace.schema.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

  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 269
    [Credential-related source omitted]
  • Access to secretsline 270
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Access to secretsline 282
    [Credential-related source omitted]

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

  • Network accessline 42
    - Extract guide: <https://www.nutrient.io/guides/dws-data-extraction/extract/>
  • Network accessline 43
    - API overview: <https://www.nutrient.io/api/data-extraction-api/>
  • Network accessline 44
    - Pricing (parse + 6 cr/page): <https://www.nutrient.io/api/pricing/data-extraction-api/>

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 23
    EXTRACT_URL = "https://api.nutrient.io/extraction/extract"
  • Network accessline 141
    return httpx.post(url, **kwargs)

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 13
    [Credential-related source omitted]

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

  • Access to secretsline 7
    [Credential-related source omitted]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Dangerous shell operationline 75
    rm -f "$TMP_SCRIPT"

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]

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

  • Network accessline 15
    - Guides: https://www.nutrient.io/guides/flutter/llms.txt
  • Network accessline 16
    - Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt
  • Network accessline 20
    - Official Flutter plugin: https://github.com/PSPDFKit/pspdfkit-flutter

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

  • Network accessline 15
    - API reference: https://www.nutrient.io/api/java-sdk/llms.txt
  • Network accessline 16
    - Guides: https://www.nutrient.io/guides/java/llms.txt
  • Network accessline 17
    - Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt

plugins/nutrient-sdk-dev/skills/nutrient-maui-sdk/SKILL.md

  • Network accessline 15
    - API reference: https://www.nutrient.io/api/maui/llms.txt
  • Network accessline 16
    - Guides: https://www.nutrient.io/guides/maui/llms.txt
  • Network accessline 17
    - Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt

plugins/nutrient-sdk-dev/skills/nutrient-nodejs-server-sdk/SKILL.md

  • Network accessline 15
    - Guides: https://www.nutrient.io/guides/nodejs/llms.txt
  • Network accessline 16
    - Cross-product index (other Nutrient SDKs): https://www.nutrient.io/llms.txt

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

and 450 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md plugins/make-pdf/skills/make-pdf/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.