Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
spillwavesolutions avatar

Automating Pages

  • 20 installs
  • 39 repo stars
  • Updated January 14, 2026
  • spillwavesolutions/automating-mac-apps-plugin

Helps with ai & agent building tasks during AI-assisted development.

About

automating-pages is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • automating-pages
  • AI & Agent Building
  • AI-coding skill

Automating Pages by the numbers

  • 20 all-time installs (skills.sh)
  • Ranked #10,442 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/spillwavesolutions/automating-mac-apps-plugin --skill automating-pages

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs20
repo stars39
Last updatedJanuary 14, 2026
Repositoryspillwavesolutions/automating-mac-apps-plugin

What it does

Helps with ai & agent building tasks during AI-assisted development.

Files

SKILL.mdMarkdownGitHub ↗

Automating Pages (JXA-first, AppleScript discovery)

Relationship to the macOS automation skill

  • Standalone for Pages, aligned with automating-mac-apps patterns.
  • Use automating-mac-apps for permissions, shell, and UI scripting guidance.
  • PyXA Installation: To use PyXA examples in this skill, see the installation instructions in automating-mac-apps skill (PyXA Installation section).

Core framing

  • Pages dictionary is AppleScript-first; discover there.
  • JXA provides the logic and data handling.
  • Objects are specifiers: References to Pages elements that require methods for reads (e.g., doc.body.text()) and assignments for writes (e.g., doc.body.text = 'new text').

Example: Create Document

const pages = Application('Pages');
const doc = pages.Document({templateName: 'Blank'});
pages.documents.push(doc);
doc.body.text = "Hello World";

Workflow (default)

1) Discover: Open Script Editor > File > Open Dictionary > Pages. 2) Prototype: Write minimal AppleScript to verify the command works. 3) Port to JXA: Convert AppleScript syntax to JXA objects.

  • Example: make new document becomes pages.documents.push(pages.Document()).
  • Add error handling (try/catch blocks).

4) Optimize: Use batch text operations when possible to avoid performance penalties. 5) Fallback: Use AppleScript bridge or UI scripting for dictionary gaps (e.g., specific layout changes).

Image Insertion (Critical Difference from Keynote)

IMPORTANT: Pages does NOT support direct image insertion like Keynote does:

// THIS WORKS IN KEYNOTE:
Keynote.Image({ file: Path("/path/to/image.png"), position: {x: 100, y: 100} });

// THIS DOES NOT WORK IN PAGES!
Pages.Image({ file: Path("/path/to/image.png") }); // ❌ Will fail

Solution: Use ObjC Pasteboard bridging (see pages-advanced.md for details):

ObjC.import('AppKit');
const nsImage = $.NSImage.alloc.initWithContentsOfFile("/path/to/image.png");
const pb = $.NSPasteboard.generalPasteboard;
pb.clearContents;
pb.setDataForType(nsImage.TIFFRepresentation, $.NSPasteboardTypeTIFF);
// Then use System Events to paste (Cmd+V)

Example Script: See automating-pages/scripts/insert_images.js for a complete working example.

Common Pitfalls

  • Image insertion: Pages lacks a native Image constructor unlike Keynote. Use ObjC Pasteboard method.
  • Dictionary gaps: Some features (like sophisticated layout adjustments) aren't in the dictionary. Use the AppleScript bridge or UI scripting.
  • Permissions: Ensure 'Accessibility' settings are enabled for UI scripting.
  • Saving: Always use doc.save({in: file_path}) with a valid path object.

Validation Checklist

  • [ ] Document opens without errors
  • [ ] Text insertion and formatting succeeds
  • [ ] Save operations complete with valid path objects
  • [ ] Template application works if used
  • [ ] Export to target format produces valid output (PDF, Word)
  • [ ] Error handling covers missing files and permissions

When Not to Use

  • Cross-platform document automation (use python-docx or pandoc)
  • AppleScript alone suffices (skip JXA complexity)
  • Web-based documents (Google Docs API)
  • Non-macOS platforms
  • Complex page layout requiring manual design tools

What to load

Level 1: Basics

  • JXA Pages basics: automating-pages/references/pages-basics.md (Core objects and document lifecycle)

Level 2: Recipes & Common Tasks

  • Recipes (templates, export, text): automating-pages/references/pages-recipes.md (Standard operations)
  • Export options matrix: automating-pages/references/pages-export-matrix.md (PDF, Word, ePub formats)
  • Template strategy: automating-pages/references/pages-template-strategy.md (Managing custom templates)

Level 3: Advanced

  • Advanced patterns (tables, images, AppleScript bridge): automating-pages/references/pages-advanced.md (Complex integrations)
  • UI scripting patterns: automating-pages/references/pages-ui-scripting.md (Fallbacks)
  • Dictionary translation table: automating-pages/references/pages-dictionary.md (AppleScript to JXA mapping)
  • PyXA (Python) alternative: automating-pages/references/pages-pyxa.md

Example Scripts

  • Image insertion: automating-pages/scripts/insert_images.js (ObjC Pasteboard method for inserting images)

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.