figure-prompt-builder · git:20260402.7b2dc4a · 2026-04-02 · sha256 11910540e4ff9fac

figure-prompt-builder git:20260402.7b2dc4aA

Immutable. This exact content never changes and is served at /api/v1/blob/11910540e4ff9fac.

---
name: nsf-figure-builder
description: Build NSF proposal figures from proposal text, thrust drafts, and prior example figures. Use when Codex needs to decide whether a proposal or thrust needs a figure, turn a figure idea into a concrete figure spec and caption, prepare a prompt pack for third-party image tools, choose an editable vector format, or reconstruct a collaborator-facing figure workflow that reduces manual PPT or Photoshop work.
---

# NSF Figure Builder

## Overview

Use this skill when the user wants help with proposal figures beyond a simple
placeholder.

This skill is optimized for NSF proposal figures, but it can still be reused
for other calls when the surrounding proposal structure and figure purpose are
explicit. In those cases, treat the provided call context as the constraint and
do not force NSF-specific figure assumptions onto the design.

This skill is for figure production workflow, not for proposal framing:

- `nsf-proposal-composer` decides whether the proposal-level story needs an
  overview or ecosystem figure
- `nsf-thrust-refiner` can suggest a local figure concept and leave a visible
  placeholder
- `nsf-figure-builder` turns that need into a reusable figure specification,
  editable-source plan, and collaboration workflow

Use it when the user asks for work such as:

- what figure should support this intro or thrust
- create a figure spec and caption
- generate a model-neutral prompt for Gemini, Claude, ChatGPT image tools, Sora, Nano Banana, or another outside tool
- choose between draw.io, SVG, Graphviz, matplotlib, or TikZ
- reduce hand-drawn PPT or Photoshop work
- rebuild an outside reference image into a locally editable vector figure

Read these references only as needed:

- figure archetypes and example anchors: `references/figure-archetypes.md`
- format and tool choice: `references/tool-selection.md`
- outside-tool prompt packs and import flow: `references/external-handoff.md`
- cross-model prompt design for image generation: `references/prompt-design.md`
- relation to local proposal files: `../nsf-proposal-composer/references/section-blueprints.md`

In a multi-proposal repo, use `<proposal-dir>` to mean one concrete proposal
workspace such as `proposals/nsf-25-533-fairos`.

Use `scripts/init_figure_spec.py` when the user wants a concrete figure spec
file scaffold under `<proposal-dir>/figure-spec/`.

## Workflow

### 1. Read Only The Figure Context You Need

Read the smallest set of files needed to understand the figure's job:

- `<proposal-dir>/00-project-description.tex` for intro and overview figures
- the target thrust or aim file for unit-level figures
- `<proposal-dir>/20-evaluation.tex` for timeline or measurable-outcomes figures
- a small number of prior examples from `examples/proposals/`
- existing figure files under `<proposal-dir>/figure/` only if the user wants a
  refresh rather than a fresh figure

Do not read the whole repo just to draft one figure.

### 2. Decide Whether The Figure Is Worth Making

Add or refresh a figure only when it compresses logic better than prose.

Typical cases:

- intro or overview figure for the end-to-end proposal logic
- thrust or aim figure for a pipeline, mechanism, or layered method
- timeline or work plan figure for evaluation and coordination
- ecosystem or adoption figure for capability-building proposals
- evidence or impact figure when adoption or prior-system footprint matters

If the figure would only restate nearby sentences without clarifying structure,
say so and avoid unnecessary figure bloat.

### 3. Pick A Figure Archetype Before Picking A Tool

Reduce the request to one archetype first:

1. `overview-architecture`
2. `thrust-mechanism`
3. `workflow-or-method-pipeline`
4. `timeline-or-work-plan`
5. `ecosystem-or-adoption`
6. `evidence-or-impact`

Then choose the editable-source format using `references/tool-selection.md`.

### 4. Produce A Figure Spec First

Before proposing final art, produce a figure spec with:

- figure goal
- one-sentence reviewer takeaway
- target section and file
- required boxes, actors, or stages
- required arrows or dependencies
- suggested layout
- short in-figure text
- caption draft
- recommended editable source format
- proposed filenames for `figure/` and `figure-src/`

This spec is the source of truth. Outside-tool drafts are optional aids, not
the final deliverable.

Do not let the figure collapse into a plain box-only wireframe unless the user
explicitly asks for a minimal placeholder. Proposal-facing figures should use a
light visual language such as icon badges, grouped regions, or restrained
illustrative cues when those cues improve readability.

### 5. When Using Outside Image Models, Produce One Prompt The Model Can Actually Use

When the user wants to test an outside image model, do not dump the entire
figure-spec bundle into the model. Produce:

1. a short local source-of-truth note for the repo
2. one model-neutral prompt meant to be copied into the outside tool

That prompt should be self-contained and visually directive, but not overloaded
with internal reasoning, review rubrics, or repo-specific workflow notes.

Use the cross-model guidance in `references/prompt-design.md`. The prompt
should usually contain these layers in this order:

- figure type and core message
- reviewer takeaway
- required layout and semantic elements
- required arrows or dependencies
- visual-quality layer
- output-quality layer

Prefer prompts that tell the rendering model:

- what kind of scientific figure this is
- what the central semantic blocks are
- how directionality should read
- how color should map to functional role
- what aesthetics to avoid

Do not ask the rendering model to optimize for the repo's internal workflow.
That part belongs in the local spec, not in the copied prompt.

### 6. Support Third-Party Tools Without Depending On Them

When the user wants to use Gemini, Sora, Nano Banana, or similar tools:

1. convert the figure spec into a clean prompt pack
2. tell the user exactly what kind of output is acceptable as a reference
3. if the returned asset should stay in the repo, place it under
   `<proposal-dir>/figure-src/reference/`
4. treat those assets as inspiration or layout references
5. rebuild the final figure in an editable vector format

Do not treat a returned raster image as the long-term source of truth unless
the user explicitly accepts that tradeoff.

### 7. Default To Editable Outputs

Prefer workflows that leave the user with editable local source files:

- `drawio` or `svg` for architecture and ecosystem figures
- `graphviz` for graphs, dependency diagrams, and typed relationships
- `matplotlib` for charts or simpler timelines
- `tikz` only when LaTeX-native generation materially helps and the expected
  complexity is manageable

For complex figures, it is acceptable to produce:

- a strong figure spec
- a prompt pack for outside ideation
- an editable skeleton rather than a fully polished final figure

The goal is to remove most manual figure-design labor, not to promise
fully automatic artistic finish.

When drafting editable skeletons:

- avoid crude box farms unless structure is the only goal
- route arrows deliberately; avoid diagonals that create visual confusion
- prefer grouped regions, icon badges, and 1-2 accent shapes over decorative
  clutter
- keep in-figure text short enough that later style polishing remains easy

### 8. Write Outputs Into Stable Locations

Use these repo locations:

- `<proposal-dir>/figure-spec/` for figure specs and prompt packs
- `<proposal-dir>/figure-src/` for editable local sources
- `<proposal-dir>/figure/` for final exported PDFs
- `<proposal-dir>/figure-src/reference/` for external reference images or drafts

When working on the long-lived template instead of an active proposal, use the
same folder names under `template/`.

When the user explicitly wants an outside-model prompt, save a dedicated prompt
file under `<proposal-dir>/figure-spec/` with a stable name such as
`<figure-name>-universal-prompt.md`. Keep the file easy to copy:

- short title
- optional one-line note
- one fenced `text` block containing the actual prompt

## Output Style

When using this skill, prefer one of these outcomes:

- a figure recommendation with rationale and no new file
- a figure spec and caption draft
- a figure spec plus a prompt pack for outside tools
- a prompt-only file meant to be pasted into an external image model
- a figure spec plus editable-source recommendation and filenames
- a refresh plan for rebuilding an outside draft into a local editable figure

Keep the output practical. The main value is reducing manual figure work while
keeping the resulting assets editable and proposal-aligned.