composio-community/awesome-codex-skills3 files

Paperjsx

Generate PPTX presentations, DOCX documents, XLSX spreadsheets, and PDF reports from structured JSON input using PaperJSX.

Specification
Skill ID
composio-community/awesome-codex-skills/paperjsx
Publisher
composio-community
Repository
awesome-codex-skills
Installs
0
Files
3
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

composio-community/awesome-codex-skills/paperjsxInstalls these files
  • LICENSE.txt
  • SKILL.md
  • references/json-schema.md

What this skill tells the agent

PaperJSX Document Generation

Generate professional documents from JSON layout specs. PaperJSX is generation-only — it creates new files, it does not edit existing ones.

Triggers

Use this skill when the user asks to:

  • Create a presentation or generate slides
  • Make a PPTX or PowerPoint file
  • Create a Word document or DOCX
  • Generate an Excel spreadsheet with charts
  • Create a JSON to PPTX, JSON to DOCX, or JSON to XLSX file
  • Generate a PDF invoice, report, or chart document

Install

Install the format-appropriate package:

# Presentations
npm install @paperjsx/json-to-pptx

# Word documents
npm install @paperjsx/json-to-docx

# Spreadsheets
npm install @paperjsx/json-to-xlsx

# PDF documents
npm install @paperjsx/json-to-pdf

How it works

  1. Build a JSON layout spec matching the schema in references/json-schema.md
  2. Write a Node.js script that passes the JSON to the PaperJSX engine
  3. Run the script to generate the output file
  4. Validate the output file exists and is non-zero bytes

Do not write imperative PaperJSX API code. The execution model is always: JSON spec in, document file out.

Example: PPTX generation

import { PaperEngine } from "@paperjsx/json-to-pptx";
import fs from "node:fs";

const spec = {
  type: "Document",
  meta: { title: "Q4 Review" },
  slides: [
    {
      type: "Slide",
      children: [
        { type: "Text", content: "Q4 2025 Business Review", style: { fontSize: 36, bold: true } }
      ]
    }
  ]
};

const buffer = await PaperEngine.render(spec);
fs.writeFileSync("presentation.pptx", buffer);
console.log("Generated presentation.pptx");

Example: DOCX generation

import { renderToDocx } from "@paperjsx/json-to-docx";
import fs from "node:fs";

const result = await renderToDocx({
  type: "DocxDocument",
  pageSize: "a4",
  orientation: "portrait",
  pages: [
    {
      elements: [
        { type: "heading", level: 1, text: "Quarterly Report" },
        { type: "paragraph", text: "Section content here." }
      ]
    }
  ]
});

fs.writeFileSync("report.docx", result.buffer);
console.log("Generated report.docx");

Example: XLSX generation

import { SpreadsheetEngine } from "@paperjsx/json-to-xlsx";
import fs from "node:fs";

const spec = {
  meta: { title: "Revenue Data", creator: "PaperJSX" },
  sheets: [{
    name: "Revenue",
    rows: [
      { cells: [{ value: "Quarter" }, { value: "Revenue" }] },
      { cells: [{ value: "Q1 2026" }, { value: 420000 }] },
      { cells: [{ value: "Q2 2026" }, { value: 510000 }] }
    ]
  }]
};

const buffer = await SpreadsheetEngine.render(spec);
fs.writeFileSync("revenue.xlsx", buffer);
console.log("Generated revenue.xlsx");

Validation

After generating any file, always verify:

import fs from "node:fs";

const stats = fs.statSync("output.pptx");
if (stats.size === 0) {
  throw new Error("Generated file is empty");
}
console.log(`Output file: ${stats.size} bytes`);

If the engine throws an error, surface the full error message to the user.

Schema reference

See references/json-schema.md for the complete JSON layout spec schema for all supported formats.

Use this skill in a project

Open any RiverX project, search the Skills panel for composio-community/awesome-codex-skills/paperjsx, and install it in one click.

Use this skill