[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-PSPDFKit-labs-nutrient-document-processing-en":3,"guides-for-PSPDFKit-labs-nutrient-document-processing":351,"similar-k1704fp8n8znrmyrxm482pgpr586nfzx-en":352},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":244,"isFallback":230,"parentExtension":248,"providers":249,"relations":254,"repo":256,"tags":347,"workflow":348},1778695810823.162,"k1704fp8n8znrmyrxm482pgpr586nfzx",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"Process documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.",{"claudeCode":12},"PSPDFKit-labs/nutrient-agent-skill","nutrient-document-processing","https://github.com/PSPDFKit-labs/nutrient-agent-skill",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":228,"workflow":242},1778695838272.3015,"kn7eqeb50t5shxxr04krd2nzn186m9da","en",{"checks":20,"evaluatedAt":192,"extensionSummary":193,"features":194,"nonGoals":202,"promptVersionExtension":206,"promptVersionScoring":207,"purpose":208,"rationale":209,"score":210,"summary":211,"tags":212,"targetMarket":221,"tier":222,"useCases":223},[21,26,29,32,36,39,43,47,50,53,57,61,64,68,71,74,77,80,83,86,90,94,98,102,106,109,112,115,119,122,125,128,131,134,137,141,145,149,153,157,160,163,166,169,173,176,179,182,185,189],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly states the problem of document processing and names specific user needs like generating, converting, and extracting data from various file types.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The extension offers significant value by providing a comprehensive set of document processing capabilities through a single API and command-line interface, going beyond basic LLM text manipulation.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill is production-ready, offering a complete lifecycle for document processing tasks, from generation and conversion to OCR, redaction, signing, and compliance outputs, with clear setup and usage instructions.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The extension focuses solely on document processing tasks using the Nutrient DWS API, without extending into unrelated domains.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the capabilities detailed in the SKILL.md and README.md, covering a wide range of document processing tasks and providing clear examples.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The extension utilizes narrow, verb-noun scoped Python scripts for specific operations (e.g., `convert.py`, `ocr.py`) rather than a single generalist tool.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","The SKILL.md and reference files document all parameters and options for the scripts and API usage, including format specifiers and page range semantics.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","The Python scripts are named descriptively using kebab-case, clearly indicating their function (e.g., `extract-text.py`, `redact-ai.py`).",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","The command-line scripts and API examples demonstrate focused input requirements and structured outputs, requesting only necessary data for the task.",{"category":54,"check":55,"severity":24,"summary":56},"License","License usability","The extension is licensed under the Apache-2.0 license, clearly stated in the LICENSE.txt file and referenced in the README.md and SKILL.md.",{"category":58,"check":59,"severity":24,"summary":60},"Maintenance","Commit recency","The latest commit was on March 23, 2026, indicating recent maintenance within the last 90 days.",{"category":58,"check":62,"severity":24,"summary":63},"Dependency Management","The scripts declare dependencies within the script header (e.g., `dependencies = [\"nutrient-dws\"]`) and use `uv` for management, indicating good practices.",{"category":65,"check":66,"severity":24,"summary":67},"Security","Secret Management","The extension handles API keys via environment variables (`NUTRIENT_API_KEY`) and explicitly warns against committing them, with no hardcoded secrets found.",{"category":65,"check":69,"severity":24,"summary":70},"Injection","The scripts process data from API calls and local files as input. There are no indications of executing arbitrary downloaded code or treating bundled content as instructions.",{"category":65,"check":72,"severity":24,"summary":73},"Transitive Supply-Chain Grenades","The extension relies on the `nutrient-dws` library and local scripts; there are no runtime fetches of code or data from remote URLs that could introduce supply-chain risks.",{"category":65,"check":75,"severity":24,"summary":76},"Sandbox Isolation","The Python scripts operate within their execution environment, writing outputs to specified paths and managing dependencies via `uv`, without attempting to access or modify files outside the project scope.",{"category":65,"check":78,"severity":24,"summary":79},"Sandbox escape primitives","No detached process spawns or retry loops around denied tool calls were found in the provided scripts.",{"category":65,"check":81,"severity":24,"summary":82},"Data Exfiltration","The extension's primary function is to process documents via an API; there are no indications of reading or submitting confidential data to third parties beyond the necessary API key.",{"category":65,"check":84,"severity":24,"summary":85},"Hidden Text Tricks","The bundled Markdown and Python files appear free of hidden text tricks, invisible Unicode characters, or other obfuscation methods.",{"category":87,"check":88,"severity":24,"summary":89},"Hooks","Opaque code execution","The Python scripts are written in plain, readable Python and do not employ obfuscation techniques like base64 encoding or runtime code fetching.",{"category":91,"check":92,"severity":24,"summary":93},"Portability","Structural Assumption","The scripts assume the presence of Python 3.10+ and `uv`, which are declared as prerequisites, and operate on files relative to the working directory.",{"category":95,"check":96,"severity":24,"summary":97},"Trust","Issues Attention","With 0 open and 0 closed issues in the last 90 days, the maintainer engagement is not measurable but does not indicate a problem.",{"category":99,"check":100,"severity":24,"summary":101},"Versioning","Release Management","The SKILL.md frontmatter declares version '1.0', and the `pushedAt` timestamp indicates recent commits, providing a clear version signal.",{"category":103,"check":104,"severity":24,"summary":105},"Code Execution","Validation","The Python scripts use standard library argument parsing and type hints, and the `nutrient-dws` library likely handles internal validation of API inputs.",{"category":65,"check":107,"severity":24,"summary":108},"Unguarded Destructive Operations","While document processing can involve transformations, the scripts focus on creating new files or modifying copies, and no inherently destructive operations like `rm -rf` or direct file deletion are performed without user explicit commands.",{"category":103,"check":110,"severity":24,"summary":111},"Error Handling","The Python scripts include try-except blocks and custom `handle_error` functions to catch exceptions, print descriptive messages to stderr, and exit with a non-zero code, enabling agent-level error handling.",{"category":103,"check":113,"severity":24,"summary":114},"Logging","The scripts print outputs and errors to stdout/stderr as expected. An audit log is not explicitly mentioned but the output of operations is clearly printed.",{"category":116,"check":117,"severity":24,"summary":118},"Compliance","GDPR","The extension processes document content but does not appear to specifically operate on or submit personal data to third parties without explicit user action or API requirements.",{"category":116,"check":120,"severity":24,"summary":121},"Target market","The extension provides document processing tools with no inherent regional limitations, making it globally applicable.",{"category":91,"check":123,"severity":24,"summary":124},"Runtime stability","The scripts declare Python 3.10+ as a requirement and use standard libraries, ensuring broad compatibility across POSIX-compliant systems.",{"category":44,"check":126,"severity":24,"summary":127},"README","The README.md is comprehensive, detailing setup, usage, features, and workflows with clear examples and visual aids.",{"category":33,"check":129,"severity":24,"summary":130},"Tool surface size","The extension exposes a well-managed set of 13 distinct Python scripts for various document processing tasks.",{"category":40,"check":132,"severity":24,"summary":133},"Overlapping near-synonym tools","The tool names (Python scripts) are distinct and cover specific functionalities without significant overlap or redundancy.",{"category":44,"check":135,"severity":24,"summary":136},"Phantom features","All advertised features in the README and SKILL.md correspond to implemented scripts and API functionalities.",{"category":138,"check":139,"severity":24,"summary":140},"Install","Installation instruction","The README provides clear installation instructions using `npx skills add` and manual methods, along with setup for the API key and example invocations.",{"category":142,"check":143,"severity":24,"summary":144},"Errors","Actionable error messages","Error messages from the Python scripts are descriptive, naming the operation that failed and often providing remediation steps (e.g., 'Export NUTRIENT_API_KEY').",{"category":146,"check":147,"severity":24,"summary":148},"Execution","Pinned dependencies","Dependencies are declared in script headers and managed by `uv`, implying pinned versions when used with a lockfile, and the Python interpreter version is specified.",{"category":33,"check":150,"severity":151,"summary":152},"Dry-run preview","not_applicable","This check is not applicable as the extension focuses on document processing operations that typically produce output files rather than state changes requiring a dry-run preview.",{"category":154,"check":155,"severity":151,"summary":156},"Protocol","Idempotent retry & timeouts","The extension relies on the Nutrient DWS API for operations. The API itself would be responsible for timeouts and idempotency, which are not directly controllable or verifiable within the skill's scripts.",{"category":116,"check":158,"severity":24,"summary":159},"Telemetry opt-in","There is no mention of telemetry collection in the provided source files, suggesting no telemetry is emitted by default.",{"category":40,"check":161,"severity":24,"summary":162},"Precise Purpose","The description and SKILL.md clearly define the extension's purpose (document processing with Nutrient DWS) and its use cases (generation, conversion, extraction, etc.) with specific triggers and boundaries.",{"category":40,"check":164,"severity":24,"summary":165},"Concise Frontmatter","The frontmatter in SKILL.md is concise, self-contained, and includes trigger phrases, enabling precise routing.",{"category":44,"check":167,"severity":24,"summary":168},"Concise Body","The SKILL.md is well-structured and under 500 lines, with deeper material delegated to separate `references/` files, adhering to progressive disclosure.",{"category":170,"check":171,"severity":24,"summary":172},"Context","Progressive Disclosure","The SKILL.md clearly outlines the workflow and links to modular reference files in the `references/` directory for detailed guidance on specific tasks.",{"category":170,"check":174,"severity":151,"summary":175},"Forked exploration","This skill does not involve deep exploration or code review that would require forked context.",{"category":22,"check":177,"severity":24,"summary":178},"Usage examples","The README and reference files provide numerous end-to-end examples with clear inputs, invocations, and expected outcomes for various document processing tasks.",{"category":22,"check":180,"severity":24,"summary":181},"Edge cases","The reference files and error handling in scripts address potential failure modes (e.g., missing credentials, invalid input, page range errors) and provide recovery steps or explanations.",{"category":103,"check":183,"severity":151,"summary":184},"Tool Fallback","The skill relies on the Nutrient DWS API and local Python scripts, not an external MCP server with a fallback mechanism.",{"category":186,"check":187,"severity":24,"summary":188},"Safety","Halt on unexpected state","The Python scripts include error handling that halts execution on unexpected states (e.g., missing API key, invalid arguments) and reports them.",{"category":91,"check":190,"severity":24,"summary":191},"Cross-skill coupling","The skill operates stand-alone and does not implicitly rely on other skills. Cross-skill coordination is not a primary pattern for this utility.",1778695838160,"This skill provides a rich set of tools for processing documents using the Nutrient DWS API. It enables actions like PDF generation from HTML/URLs, format conversions, OCR, text/table/key-value extraction, PII redaction, watermarking, signing, form filling, and compliance outputs like PDF/A and PDF/UA.",[195,196,197,198,199,200,201],"Generate PDFs from HTML, URLs, or assets","Convert between various document and image formats","Perform OCR on scanned documents and extract text","Extract tables and key-value pairs","Redact PII using pattern matching or AI","Apply watermarks, digital signatures, and fill forms","Produce compliance outputs (PDF/A, PDF/UA) and optimize PDFs",[203,204,205],"Performing document processing locally without external API integration.","Handling tasks unrelated to document manipulation or generation.","Replacing dedicated desktop PDF editing software for complex manual edits.","3.0.0","4.4.0","Empower AI agents with advanced document processing capabilities, enabling them to handle a wide array of tasks from simple conversions to complex compliance and security operations.","The extension is well-documented, production-ready, and securely implemented with clear scope and effective error handling. All checks passed.",98,"A comprehensive and well-executed document processing skill with extensive documentation and clear usage patterns.",[213,214,215,216,217,218,219,220],"document-processing","pdf","ocr","conversion","redaction","signing","compliance","extraction","global","verified",[224,225,226,227],"Use when needing to convert office documents or images to PDF.","Use when requiring OCR on scanned documents to extract text or data.","Use when needing to redact sensitive information from documents before sharing.","Use when assembling, splitting, or signing multi-page PDF documents.",{"codeQuality":229,"collectedAt":231,"documentation":232,"maintenance":235,"security":239,"testCoverage":240},{"hasLockfile":230},false,1778695812440,{"descriptionLength":233,"readmeSize":234},464,9978,{"closedIssues90d":8,"forks":8,"hasChangelog":230,"manifestVersion":236,"openIssues90d":8,"pushedAt":237,"stars":238},"1.0",1774287033000,7,{"hasNpmPackage":230,"smitheryVerified":230},{"hasCi":241,"hasTests":241},true,{"updatedAt":243},1778695838272,{"basePath":13,"githubOwner":245,"githubRepo":246,"locale":18,"slug":13,"type":247},"PSPDFKit-labs","nutrient-agent-skill","skill",null,{"evaluate":250,"extract":252},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":251,"targetMarket":221,"tier":222},[213,214,215,216,217,218,219,220],{"commitSha":253},"HEAD",{"repoId":255},"kd71fjmn43awb0bgafy6r3vers86ngqg",{"_creationTime":257,"_id":255,"identity":258,"providers":259,"workflow":343},1778695804775.8076,{"githubOwner":245,"githubRepo":246,"sourceUrl":14},{"classify":260,"discover":329,"github":332},{"commitSha":253,"extensions":261},[262],{"basePath":13,"description":10,"displayName":13,"installMethods":263,"rationale":264,"selectedPaths":265,"source":328,"sourceLanguage":18,"type":247},{"claudeCode":12},"SKILL.md frontmatter at nutrient-document-processing/SKILL.md",[266,269,272,275,277,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326],{"path":267,"priority":268},"SKILL.md","mandatory",{"path":270,"priority":271},"LICENSE.txt","high",{"path":273,"priority":274},"assets/nutrient.svg","low",{"path":276,"priority":274},"assets/templates/custom-workflow-template.py",{"path":278,"priority":279},"references/REFERENCE.md","medium",{"path":281,"priority":279},"references/compliance-and-optimization.md",{"path":283,"priority":279},"references/extraction-and-ocr.md",{"path":285,"priority":279},"references/generation-and-conversion.md",{"path":287,"priority":279},"references/pdf-manipulation.md",{"path":289,"priority":279},"references/request-basics.md",{"path":291,"priority":279},"references/security-signing-and-forms.md",{"path":293,"priority":279},"references/workflow-recipes.md",{"path":295,"priority":274},"scripts/add-pages.py",{"path":297,"priority":274},"scripts/convert.py",{"path":299,"priority":274},"scripts/delete-pages.py",{"path":301,"priority":274},"scripts/duplicate-pages.py",{"path":303,"priority":274},"scripts/extract-key-value-pairs.py",{"path":305,"priority":274},"scripts/extract-table.py",{"path":307,"priority":274},"scripts/extract-text.py",{"path":309,"priority":274},"scripts/lib/common.py",{"path":311,"priority":274},"scripts/merge.py",{"path":313,"priority":274},"scripts/ocr.py",{"path":315,"priority":274},"scripts/optimize.py",{"path":317,"priority":274},"scripts/password-protect.py",{"path":319,"priority":274},"scripts/redact-ai.py",{"path":321,"priority":274},"scripts/rotate.py",{"path":323,"priority":274},"scripts/sign.py",{"path":325,"priority":274},"scripts/split.py",{"path":327,"priority":274},"scripts/watermark-text.py","rule",{"sources":330},[331],"manual",{"closedIssues90d":8,"description":333,"forks":8,"openIssues90d":8,"pushedAt":237,"readmeSize":234,"stars":238,"topics":334},"Universal Agent Skill for document processing with Nutrient DWS API — works with Claude Code, Codex, Gemini CLI, Cursor, and 35+ more agents",[335,336,337,338,339,213,340,341,342,214],"agent-skills","ai-agents","claude-code","codex","cursor","gemini-cli","mcp","nutrient",{"classifiedAt":344,"discoverAt":345,"extractAt":346,"githubAt":346,"updatedAt":344},1778695810550,1778695804775,1778695808676,[219,216,213,220,215,214,217,218],{"evaluatedAt":243,"extractAt":349,"updatedAt":350},1778695810823,1778695861458,[],[353,382,404,425,448,468],{"_creationTime":354,"_id":355,"community":356,"display":357,"identity":363,"providers":367,"relations":375,"tags":378,"workflow":379},1778691104675.9897,"k17fpgdfkq2ktrjw2phyx6c9f586ma8t",{"reviewCount":8},{"description":358,"installMethods":359,"name":361,"sourceUrl":362},"Extract merchant, date, line items, tax, and total from receipts.",{"claudeCode":360},"iterationlayer/skills","extract-receipt-data","https://github.com/iterationlayer/skills",{"basePath":364,"githubOwner":365,"githubRepo":366,"locale":18,"slug":361,"type":247},"skills/extract-receipt-data","iterationlayer","skills",{"evaluate":368,"extract":374},{"promptVersionExtension":206,"promptVersionScoring":207,"score":369,"tags":370,"targetMarket":221,"tier":222},99,[371,372,220,213,215,373],"receipts","finance","data-extraction",{"commitSha":253},{"parentExtensionId":376,"repoId":377},"k1721s0xmp59902ybtpakrrffn86n10s","kd76p4g2qmtrkgx99cnab3683d86n4g8",[373,213,220,372,215,371],{"evaluatedAt":380,"extractAt":381,"updatedAt":380},1778692373588,1778691104676,{"_creationTime":383,"_id":384,"community":385,"display":386,"identity":390,"providers":393,"relations":400,"tags":401,"workflow":402},1778691104675.9805,"k173dwe2djyydbkrp6qr8dbrfs86nk8d",{"reviewCount":8},{"description":387,"installMethods":388,"name":389,"sourceUrl":362},"Extract structured data from documents using AI-powered field extraction.",{"claudeCode":360},"Document Extraction API",{"basePath":391,"githubOwner":365,"githubRepo":366,"locale":18,"slug":392,"type":247},"skills/document-extraction-api","document-extraction-api",{"evaluate":394,"extract":398},{"promptVersionExtension":206,"promptVersionScoring":207,"score":369,"tags":395,"targetMarket":221,"tier":222},[213,373,396,397,214,215],"ai","api",{"commitSha":253,"license":399},"MIT",{"parentExtensionId":376,"repoId":377},[396,397,373,213,215,214],{"evaluatedAt":403,"extractAt":381,"updatedAt":403},1778691504579,{"_creationTime":405,"_id":406,"community":407,"display":408,"identity":412,"providers":414,"relations":421,"tags":422,"workflow":423},1778691104675.9834,"k17bwxnh9scy64bmm9anmf7bbx86mtvn",{"reviewCount":8},{"description":409,"installMethods":410,"name":411,"sourceUrl":362},"Extract vehicle identification, owner details, registration dates, and technical specifications from vehicle registration documents.",{"claudeCode":360},"extract-fleet-vehicle-registration",{"basePath":413,"githubOwner":365,"githubRepo":366,"locale":18,"slug":411,"type":247},"skills/extract-fleet-vehicle-registration",{"evaluate":415,"extract":420},{"promptVersionExtension":206,"promptVersionScoring":207,"score":416,"tags":417,"targetMarket":221,"tier":222},100,[213,373,418,419,214],"fleet-management","api-integration",{"commitSha":253},{"parentExtensionId":376,"repoId":377},[419,373,213,418,214],{"evaluatedAt":424,"extractAt":381,"updatedAt":424},1778691789036,{"_creationTime":426,"_id":427,"community":428,"display":429,"identity":433,"providers":436,"relations":444,"tags":445,"workflow":446},1778691104675.98,"k17a012kzjtmn6vm9xf7k1q3d986n6me",{"reviewCount":8},{"description":430,"installMethods":431,"name":432,"sourceUrl":362},"Convert a resume PDF to clean markdown for LLM parsing or candidate pipelines.",{"claudeCode":360},"Convert Resume to Markdown",{"basePath":434,"githubOwner":365,"githubRepo":366,"locale":18,"slug":435,"type":247},"skills/convert-resume-to-markdown","convert-resume-to-markdown",{"evaluate":437,"extract":443},{"promptVersionExtension":206,"promptVersionScoring":207,"score":416,"tags":438,"targetMarket":221,"tier":222},[213,214,439,440,441,442],"markdown","resume","hiring","nlp",{"commitSha":253,"license":399},{"parentExtensionId":376,"repoId":377},[213,441,439,442,214,440],{"evaluatedAt":447,"extractAt":381,"updatedAt":447},1778691474825,{"_creationTime":449,"_id":450,"community":451,"display":452,"identity":456,"providers":458,"relations":464,"tags":465,"workflow":466},1778691104675.9788,"k177gcxzqsc3my2v82rvr71sys86m9cf",{"reviewCount":8},{"description":453,"installMethods":454,"name":455,"sourceUrl":362},"Convert a contract PDF to clean markdown for clause extraction or LLM analysis.",{"claudeCode":360},"convert-contract-to-markdown",{"basePath":457,"githubOwner":365,"githubRepo":366,"locale":18,"slug":455,"type":247},"skills/convert-contract-to-markdown",{"evaluate":459,"extract":463},{"promptVersionExtension":206,"promptVersionScoring":207,"score":369,"tags":460,"targetMarket":221,"tier":222},[213,214,439,461,462],"legaltech","llm-analysis",{"commitSha":253},{"parentExtensionId":376,"repoId":377},[213,461,462,439,214],{"evaluatedAt":467,"extractAt":381,"updatedAt":467},1778691357395,{"_creationTime":469,"_id":470,"community":471,"display":472,"identity":478,"providers":483,"relations":491,"tags":493,"workflow":494},1778691560361.7036,"k1772bzehkaawbdcdkcydktxbd86nhtm",{"reviewCount":8},{"description":473,"installMethods":474,"name":476,"sourceUrl":477},"Extract text from PDFs, fill forms, and merge documents",{"claudeCode":475},"jlowin/fastmcp","PDF Processing Skill","https://github.com/jlowin/fastmcp",{"basePath":479,"githubOwner":480,"githubRepo":481,"locale":18,"slug":482,"type":247},"examples/skills/sample_skills/pdf-processing","jlowin","fastmcp","pdf-processing",{"evaluate":484,"extract":489},{"promptVersionExtension":206,"promptVersionScoring":207,"score":369,"tags":485,"targetMarket":221,"tier":222},[214,486,220,487,488],"document","forms","merging",{"commitSha":253,"license":490},"Apache-2.0",{"repoId":492},"kd7cqsp22edgcrb25vz9wgd34986mqfa",[486,220,487,488,214],{"evaluatedAt":495,"extractAt":496,"updatedAt":497},1778691653116,1778691560361,1778691899217]