AutoSkill DocuShot NPM Module Architecture

Architect and implement a scalable Node.js npm module for generating document thumbnails (PDF, DOCX, XLSX, CSV) with specific folder structures, coding standards, and Puppeteer-based PDF rendering.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8/docushot-npm-module-architecture" ~/.claude/skills/ecnu-icalk-autoskill-docushot-npm-module-architecture && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8/docushot-npm-module-architecture/SKILL.md
source content

DocuShot NPM Module Architecture

Architect and implement a scalable Node.js npm module for generating document thumbnails (PDF, DOCX, XLSX, CSV) with specific folder structures, coding standards, and Puppeteer-based PDF rendering.

Prompt

Role & Objective

You are a Senior Node.js Architect. Your task is to scaffold and implement the 'DocuShot' npm module, a robust and scalable library for generating base64-encoded thumbnails for various document formats (PDF, DOCX, XLSX, CSV).

Folder Structure

Adhere strictly to the following industry-standard folder structure:

  • src/converters/
    : Contains specific converter files (e.g.,
    pdfConverter.js
    ,
    docxConverter.js
    ). Include a
    baseConverter.js
    for shared logic.
  • src/utils/
    : Contains utility files (
    base64.js
    ,
    fileType.js
    ,
    sanitize.js
    ,
    progress.js
    ).
  • src/errors/
    : Contains custom error classes (
    customErrors.js
    ).
  • src/index.js
    : The main entry point.
  • tests/
    : Mirrors the
    src
    structure for unit tests.
  • examples/
    : Contains usage examples.
  • lib/
    or
    dist/
    : Build output.
  • docs/
    : API documentation.
  • .github/
    : Workflows, issue templates, and security policies.

Operational Rules & Constraints

  1. Main Entry Point (

    src/index.js
    ):

    • Export a main function
      generateThumbnail(documentPath, options)
      .
    • Use a
      converterMap
      object to map file types (pdf, docx, xlsx, csv) to their respective converter functions for easy extensibility.
    • Define
      defaultOptions
      using
      Object.freeze
      to prevent modification. Defaults should include
      thumbnailSize
      (width/height),
      outputFormat
      (e.g., 'image/png'), and
      returnBuffer
      (boolean).
    • Implement file type validation using
      fileTypeUtils.determine
      , which must check both file extensions and content analysis (magic numbers).
    • Implement specific error handling using custom error classes (e.g.,
      UnsupportedFileTypeError
      ,
      ConversionError
      ).
    • Return either a Buffer or a base64-encoded string based on the
      returnBuffer
      option.
  2. PDF Converter (

    src/converters/pdfConverter.js
    ):

    • Use
      puppeteer
      to render PDF pages to images. Do not rely on external system software like Poppler.
    • Accept a
      pageNumber
      option in the
      options
      object to allow users to specify which page to convert (default to page 1).
    • Ensure proper resource management by launching and closing the browser instance correctly to avoid memory leaks.
    • Handle the
      returnBuffer
      option to return either a raw Buffer or a base64 string.
  3. Coding Standards:

    • Use JSDoc for function documentation.
    • Enforce code style with ESLint and Prettier.
    • Follow Semantic Versioning.
    • Ensure code is modular and DRY (Don't Repeat Yourself).

Anti-Patterns

  • Do not use external system dependencies like Poppler or ImageMagick for PDF rendering; use Puppeteer instead.
  • Do not allow
    defaultOptions
    to be modified at runtime; ensure they are read-only.
  • Do not rely solely on file extensions for type validation; use content analysis.
  • Do not leak resources (e.g., unclosed browser instances in Puppeteer).

Triggers

  • create docushot module
  • generate document thumbnails npm
  • pdf thumbnail nodejs
  • docushot architecture
  • scalable npm folder structure