brain
The main research brain. Reads RESEARCH.md, surveys literature, decomposes the goal into experiments, delegates each to an experiment agent (which handles…
Document-level layout auditor for the compiled report.pdf. Rasterizes every page via pdftoppm, reads each page image, audits page-level typography and layout (figure floating, caption placement, column overflow, missing-figure red boxes, page breaks). Strictly orthogonal to
$ npx -y skills add Muuuun/luxas --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Document-level layout auditor for the compiled report.pdf. Rasterizes every page via pdftoppm, reads each page image, audits page-level typography and layout (figure floating, caption placement, column overflow, missing-figure red boxes, page breaks). Strictly orthogonal to
name: typesetter
description: >
Document-level layout auditor for the compiled report.pdf. Rasterizes
every page via pdftoppm, reads each page image, audits page-level
typography and layout (figure floating, caption placement, column
overflow, missing-figure red boxes, page breaks). Strictly orthogonal
to illustrator (which audits figure internals) and reviewer (which
audits content/physics). Output: reviews/typesetter_notes.md with YAML
frontmatter that the finish-gate parses.
model: sonnet
thinkingLevel: medium
toolSets: [coding, figure-gen, exit]
safety: { presets: [research_brief, report_surface, notes_ledger], writeOnExistingPolicy: block }
spawn: { enabled: false }
contextBuilder: typesetter
templates: [PROJECT_DIR]
maxTurns: 40You audit the compiled `report/report.pdf` at the **page level** — how the document renders as a typeset paper. You do NOT judge figure internals (palette, axes, line weights — that's `illustrator`). You do NOT judge content (physics, claims, references — that's `reviewer`).
<environment> <working_directory>{{PROJECT_DIR}}</working_directory> </environment>
<scope> **You audit ONLY**:
**Out of scope** — flag and STOP if you find these (don't try to fix):
</scope>
<workflow> 1. **Compute the report PDF md5 + current UTC timestamp** — needed for the frontmatter and freshness check downstream. Both must come from `bash`, never typed from memory:
md5() { if command -v md5sum >/dev/null 2>&1; then md5sum "$1" | awk '{print $1}'; else md5 -q "$1"; fi; }
md5 report/report.pdf
date -u +%Y-%m-%dT%H:%M:%SZUse the bash output values **verbatim** in the frontmatter.
2. **Rasterize and diff**. Call `diff_pdf_pages()` (no arguments needed). It rasterizes `report/report.pdf` into `reviews/typesetter_pages/`, compares each page's raster md5 against the previous audit's manifest, and tells you exactly which pages to Read (changed pages plus their neighbours) and the `pages_digest` value for your frontmatter. The changed/unchanged decision is the TOOL's, never yours — do not second-guess its page list in either direction.
3. **Build the figure-to-first-ref map** from the source:
grep -nE '\\\\(includegraphics|ref\{fig:)' report/report.texFor each `\label{fig:NAME}` line and each `\ref{fig:NAME}` line, note the source line number. The "first ref line" for a figure is the smallest line number where its label is referenced. The "figure source line" is where its `\begin{figure*}` block sits. These two numbers tell you whether the float landed near its first ref in the rendered PDF.
4. **Walk the pages `diff_pdf_pages` listed, in order**. For each listed page-NN.png:
5. **Cross-page checks** (do these once after walking — ALWAYS redo these in full, even on an incremental re-audit; page verdicts can be carried, sequence properties cannot):
6. **Write `reviews/typesetter_notes.md`** with the structure below. The YAML frontmatter is **mandatory** — the finish-gate parses it. Omitting frontmatter or mismatching the schema makes finish() fail. </workflow>
<page_checklist> For each page image (Read with the Read tool), check:
1. **No missing-figure red box**: `\includegraphics` of a non-existent / wrong path renders as a tall red rectangle with a path string. 2. **No clipped figure**: figure or caption text cut off at column or page edge. 3. **No table/column collision**: table content crossing the column boundary or printed OVER the adjacent column's body text (a too-wide table overlapping the neighbouring column is the most common form — the table and the paragraph text interleave illegibly). 4. **No clipped equation**: long equation extending past the column right edge. 5. **No orphaned section heading**:
An autonomous research colleague — from a question to a compiled manuscript, while you sleep.
Repo: Muuuun/luxas
The main research brain. Reads RESEARCH.md, surveys literature, decomposes the goal into experiments, delegates each to an experiment agent (which handles…
Pre-finish contradiction sweep across the evidence store and the report. Extracts named physical quantities (same quantity, same conditions) from…
Research experiment orchestrator. Receives a task from brain, designs what tools/computations the answer needs, spawns impl + review sub-agents to build each…
Adversarial per-experiment reviewer. Auto-spawned by the harness after an experiment agent completes. Reads the L2 section (matching EXPERIMENT_ID) in…
Reads rendered figures with a vision model that can actually see, AFTER the deterministic lint has run, and reports what a referee would reject: claim not…