agent-research-aggrega…
Pre-pipeline aggregator that scans AI agent cache directories (.claude, .cursor, .antigravity, .openclaw) or any user-specified directory for experimentation…
Step 2 of the PaperOrchestra pipeline (arXiv:2604.05018). Execute the visualization plan from outline.json — render plots and conceptual diagrams from experimental_log.md and idea.md, optionally refine via VLM critique loop, and produce context-aware captions. Runs in parallel
$ npx -y skills add Ar9av/PaperOrchestra --skill plotting-agent --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/plotting-agentContext preview
The summary Claude sees to decide when to auto-load this skill.
Step 2 of the PaperOrchestra pipeline (arXiv:2604.05018). Execute the visualization plan from outline.json — render plots and conceptual diagrams from experimental_log.md and idea.md, optionally refine via VLM critique loop, and produce context-aware captions. Runs in parallel
name: plotting-agent description: Step 2 of the PaperOrchestra pipeline (arXiv:2604.05018). Execute the visualization plan from outline.json — render plots and conceptual diagrams from experimental_log.md and idea.md, optionally refine via VLM critique loop, and produce context-aware captions. Runs in parallel with the literature-review-agent. TRIGGER when the orchestrator delegates Step 2 or when the user asks to "generate the figures for my paper" or "render the plots from this experiment log".
Faithful implementation of the Plotting Agent from PaperOrchestra (Song et al., 2026, arXiv:2604.05018, §4 Step 2 and App. F.1 p.45).
**Cost: ~20–30 LLM calls.** The paper uses PaperBanana (Zhu et al., 2026) as the default backbone with a closed-loop VLM-critique refinement. This skill expresses that loop in host-agent terms: you (the host agent) generate matplotlib code with your own LLM, render via your Bash/Python tool, optionally critique the rendered PNG with your vision model, redraw, and finally caption.
the source data
(300 DPI, sized to the requested aspect ratio)
1. **Read the figure spec** from `outline.json`:
{
"figure_id": "fig_main_results",
"title": "Main Results on Dataset X",
"plot_type": "plot",
"data_source": "experimental_log.md",
"objective": "Visual summary (Grouped Bar Chart) demonstrating ...",
"aspect_ratio": "5:4"
}2. **Few-shot retrieval (visual planning)**: pick the matching pattern from `references/chart-patterns.md` (for `plot_type=="plot"`) or `references/diagram-patterns.md` (for `plot_type=="diagram"`).
3. **Extract data**: parse `idea.md` and/or `experimental_log.md` (`data_source` field tells you which) to obtain the numeric values or conceptual entities the figure needs. For `experimental_log.md`, the `## 2. Raw Numeric Data` section contains markdown tables.
4. **Render**:
**If `PAPERBANANA_PATH` is set** — use the PaperBanana backbone (Zhu et al., 2026). It runs a Retriever → Planner → Stylist → Visualizer → Critic loop and is especially good for `plot_type == "diagram"`. See `references/paperbanana-cookbook.md` for setup (needs a Gemini API key).
python skills/plotting-agent/scripts/paperbanana_render.py \
--figure-id <figure_id> \
--caption "<objective from figure spec>" \
--content-file workspace/inputs/idea.md \
--task <diagram|plot> \
--aspect-ratio <aspect_ratio> \
--out workspace/figures/<figure_id>.png**Otherwise** — write a matplotlib script and run it via your Bash tool, or use the bundled helper:
python skills/plotting-agent/scripts/render_matplotlib.py \
--spec spec.json \
--out workspace/figures/<figure_id>.pngThe script must apply the academic style from `chart-patterns.md`, use the correct pixel size from `aspect-ratios.md`, save at 300 DPI, and call `plt.close()` after `savefig`.
5. **VLM critique loop (optional, only if your host has vision)**:
visual artifacts, mislabeled axes, illegible text, color clashes, misleading scaling, missing legend, overlapping labels.
and re-render. Cap at 3 critique iterations per figure.
PaperBanana. See `references/plotting-pipeline.md` for the full loop description.
figure will still render correctly, just without iterative refinement.
6. **Generate the caption** using the verbatim Caption Generation prompt at `references/caption-prompt.md`. Inputs to the caption prompt:
"Experiments")
the section_plan if the section isn't drafted yet)
actually shows (from your VLM critique pass, or from the script's plan if no vision)
Write the caption to `workspace/figures/captions.json` keyed by `figure_id`. **Captions must NOT contain `Figure N:` or `Caption N:` prefixes** — the LaTeX template handles numbering. Plain text only, no markdown.
For `plot_type == "diagram"`, prefer PaperBanana when available — its Retriever grounds the Planner in real published paper diagrams. If `PAPERBANANA_PATH` is unset, follow `references/diagram-patterns.md`. Patterns include block diagrams, system overviews, flowcharts, and algorithm-as-graph. The bundled helper:
python skills/plotting-agent/scripts/render_diagram.py \
--spec diagram_spec.json \
--out workspace/figures/<figure_id>.pnghandles the simple cases (boxes-and-arrows). For complex Fig-1-style overview diagrams, write matplotlib patches code yourself.
step on conference templates.
enumerated strings. Use the pixel targets in `references/aspect-ratios.md`
A pluggable skill pack that lets any coding agent in Claude Code, Cursor, Antigravity, Cline, Aider, OpenCode, etc. which can run the PaperOrchestra multi-agent pipeline for turning unstructured research materials into a submission-ready LaTeX paper.
Pre-pipeline aggregator that scans AI agent cache directories (.claude, .cursor, .antigravity, .openclaw) or any user-specified directory for experimentation…
Step 5 of the PaperOrchestra pipeline (arXiv:2604.05018). Iteratively refine drafts/paper.tex by simulating peer review and applying targeted revisions, with…
Step 3 of the PaperOrchestra pipeline (arXiv:2604.05018). Execute the literature search strategy from outline.json — discover candidate papers via web search,…
Step 1 of the PaperOrchestra pipeline (arXiv:2604.05018). Convert (idea.md, experimental_log.md, template.tex, conference_guidelines.md) into a strict JSON…
Run the four paper-quality autoraters from PaperOrchestra (arXiv:2604.05018, App. F.3) — Citation F1 (P0/P1 partition + Precision/Recall/F1), Literature Review…
Orchestrate the full PaperOrchestra (Song et al., 2026, arXiv:2604.05018) five-agent pipeline to turn unstructured research materials (idea, experimental log,…