Prompting and packages
Tune prompts using Feather Harness as a reference, and give the model the Paper packages.
Ultramarine was trained with large-scale non-verifiable rewards, so it has more expressive aesthetic and prose-writing sensibilities than traditional models. It is critical to tune your prompts carefully to get the most out of it. Test changes on your own tasks.
Start from Feather Harness
Feather Harness has examples of prompts we've tuned for internal testing. Start with its system prompts, profiles, and skills.
| Profile | What it includes |
|---|---|
train | A minimal system prompt, the original tool descriptions, and a skills catalog. |
prod | A production prompt for knowledge work covering scoping, evidence and sources, numbers and models, and deliverables, plus tool descriptions and a compaction prompt. |
Both profiles include skills
for Word, Excel, PowerPoint, and PDF work, each a SKILL.md entry point with API
references and scripts. prod adds
production guidance
for each format and a shared design guide.
See how the harness works for the agent loop, tools, skills, and context compaction.
Request settings
- We default to
maxthinking (reasoning effort) and recommend it for best results. See reasoning. - Start with default sampling settings.
- Keep repeated prompt prefixes stable to improve cache hits.
Packages
Ultramarine was trained in a sandbox built from the python:3.13-slim Debian
image. Starting from that image, install these where the model runs code.
Python
| Package | Used for |
|---|---|
paper-docx | Word documents (imports as docx) |
paper-pptx | PowerPoint presentations (imports as pptx) |
paper-xlsx | Excel workbooks (imports as openpyxl) |
reportlab | PDF authoring |
pypdf, pdfplumber, PyMuPDF, pypdfium2 | PDF reading, extraction, and rendering |
pdf2image, Pillow | Rendering pages to images and processing images |
pandas | Tabular data |
requests, beautifulsoup4, lxml | HTTP requests and HTML and XML parsing |
The Paper packages are forks that keep the upstream import names, so existing code works unchanged. When an edit cannot be made safely, they raise a typed error and leave the file unchanged. Other packages can pull in the upstream distributions, so install the Paper packages last:
pip install pandas==2.2.3 requests==2.32.3 beautifulsoup4==4.12.3 lxml==5.3.0 \
pypdf pypdfium2==5.10.1 pdfplumber==0.11.10 pdf2image==1.17.0 \
"Pillow>=12.1.1,<13" PyMuPDF==1.28.0 reportlab==4.5.1
pip uninstall -y python-docx python-pptx openpyxl
pip install --force-reinstall paper-docx==0.2.0 paper-pptx==0.2.0 paper-xlsx==0.2.1System
sudo apt-get update
sudo apt-get install -y --no-install-recommends curl git jq zip unzip ripgrep \
poppler-utils libreoffice-calc tesseract-ocr| Package | Used for |
|---|---|
ripgrep | File search |
curl, git, jq, zip, unzip | Common command-line tools |
poppler-utils | PDF rendering and text extraction |
libreoffice-calc | Formula recalculation |
tesseract-ocr | OCR for scanned documents. Add the language packs you need. |