automating-pages
Automates Apple Pages using JXA with AppleScript dictionary discovery. Use when asked to "automate Pages documents", "create documents programmatically", "JXA Pages scripting", or "export Pages to PDF". Covers documents, templates, text, styles, export, tables, images, and AppleScript bridge fallbacks.
What this skill does
# 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
```javascript
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:
```javascript
// 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):
```javascript
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 in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.