Przejdź do treści
Biblioteka skilli
Nauka i badania · Przegląd i audyt

how-to-review-figure

/how-to-review-figure

Ocenia projekt wizualny wykresu, rysunku lub diagramu według naukowej rubryki wykresów.

Repozytorium
sci-brain ↗
Licencja
MIT
Ostatnia zmiana repozytorium
25.09.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
1
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 25.09.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: helpers/render.py

Co robi i kiedy

Ocenia projekt wizualny wykresu, rysunku lub diagramu według naukowej rubryki wykresów.

Oryginalny opis (EN)

Agentic trigger. Use when judging the visual design of a figure, plot, or diagram against a scientific-plot rubric.

Jak działa

  1. Installed resources
  2. Operating principle
  3. The rubric — 18 rules
  4. Severity rubric
  5. Phase 0 — Scope & render
  6. Phase 1 — Score against the rubric
  7. Phase 2 — Deliver
  8. Reused vs. new
  9. Common mistakes
  10. Integrations
Sekcje z nagłówków SKILL.md, w oryginale · 157 linii, 1 566 słów
Podgląd SKILL.md
---
name: how-to-review-figure
description: Agentic trigger. Use when judging the visual design of a figure, plot, or diagram against a scientific-plot rubric.
---

## Installed resources

Keep the working directory at the user's project. Resolve this loaded `SKILL.md`
with `Path(path).resolve()` before locating resources; follow symlinks. Bare
`helpers/`, `references/`, and template paths are relative to that real skill
directory. A path written as `skills/<name>/...` means the installed `<name>`
skill's directory from the agent's skill catalog, not a path in the user's project.
Locate each dependency by its public skill name; copied skills need not be siblings.
If a dependency is absent, report the missing skill and install it before that step.
Shared writing files are bundled in `how-to-write-ideas-report/references/`.

Before running the examples, set `REVIEW_FIGURE_DIR` to the absolute directory of `how-to-review-figure`. Quote these variables as shown.


# Figure Taste

Run a structured **visual-design review** over one or more figures and print a scorecard. The skill **renders the figure to a raster so it can see it**, reads the source (matplotlib `.py`, Typst `.typ`, SVG) so suggestions can name the exact line or parameter to change, scores it against an 18-rule rubric, and delivers severity-ranked findings with concrete fixes.

**Scope note.** This judges *how a figure looks* — the artifact itself. It is **not** `review-paper`, which checks whether figures are *referenced and discussed in the manuscript* (orphan figures, undiscussed features, caption sufficiency). It is **not** `write-paper`, which *authors* figures figures-first. Use `how-to-review-figure` when a figure already exists and the user wants its visual quality assessed. For the *why* behind a plotting convention, consult `write-paper`'s Figure Rulebook rather than restating it here.

The full rubric — each rule's "good looks like" and "flag when" — lives in `skills/how-to-review-figure/checklist.md`.

---

## Operating principle

**Source-aware, report-only, terminal-first.**

- **Source-aware** — always look at a rendered raster before scoring (never judge a figure you have not seen); when source exists, read it too so a fix can cite a line or parameter.
- **Report-only** — never edit the figure or its source. Suggest concrete changes; the user applies them.
- **Terminal-first** — print the scorecard to the chat by default. Write a file only when the user asks.

---

## The rubric — 18 rules

All **11 general rules** apply to every figure. The **7 scientific rules** add on when the figure is a scientific plot (quantitative axes / data series). Numbering is stable: scientific IDs skip S4/S6/S10 (axes-with-units, honest-axes, show-uncertainty were considered and not selected — keep the gaps if added later).

| ID | Rule | Applies to |
|----|------|-----------|
| G1 | **Alignment** — contents align to a shared grid / baselines, not eyeballed | all |
| G2 | **Proximity** — related elements are physically close; unrelated ones separated | all |
| G3 | **Edge padding** — text and content have breathing room from the boundaries | all |
| G4 | **Unified color** — a limited, coherent palette; not too colorful | all |
| G5 | **Clear focus** — the main message stands out; not too many competing highlights | all |
| G6 | **Reading order / hierarchy** — the eye knows where to start and go next; the key element reads first | all |
| G7 | **Consistent sizing & spacing** — same-type elements share size; gutters/margins are uniform | all |
| G8 | **Contrast & legibility** — text and lines stand out from their background | all |
| G9 | **Colorblind / grayscale-safe** — no meaning carried by red-vs-green alone; survives B&W | all |
| G10 | **No overlap / clipping / occlusion** — nothing collides, covers data, or is cut off at edges | all |
| G11 | **Consistent typography** — one or two font families; a small set of sizes as a hierarchy | all |
| S1 | **Text large enough** — readable at the intended display size | plots |
| S2 | **Lines strong enough** — data lines/markers have enough weight to read | plots |
| S3 | **Efficient use of space** — no large empty regions; data fills the frame | plots |
| S5 | **Minimize chartjunk** — drop 3D effects, heavy gridlines, redundant borders, decorative fills | plots |
| S7 | **Legend & direct labeling** — legend unambiguous and not occluding; prefer direct labels for few series | plots |
| S8 | **Cross-panel consistency** — comparable subpanels share scales/axes/colors; consistent (a)(b)(c) labels | plots |
| S9 | **Resolution / format adequate** — vector where possible; no pixelation or blur at display size | plots |

---

## Severity rubric

Rank every non-pass finding so the user can triage:

- **high** — breaks readability or meaning: illegible text at display size, clipped/cut-off content, meaning lost in grayscale (G9), data occluded by a legend, pixelated-to-unreadable.
- **med** — hurts clarity but not correctness: too colorful (G4), weak hierarchy/focus (G5/G6), inconsistent spacing (G7), chartjunk (S5), weak lines (S2), large blank areas (S3).
- **low** — polish: minor edge padding (G3), marker/typography inconsistency, an ambiguous-but-survivable legend.

---

## Phase 0 — Scope & render

1. **Resolve target(s).** Accept explicit path(s), a directory, or auto-detect (`images/`, `figures/`, then `*.png|jpg|jpeg|pdf|svg|typ` in the working directory). If several are found and the user did not name one, list them and ask which to review.
2. **Establish the display context.** Ask once (with a default): where will this figure appear — **paper single-column / paper double-column / slide / poster / web** — and the final width. This is what makes S1 (text size) and S9 (resolution) meaningful. **Default if unspecified:** paper double-column (~3.4 in wide).
3. **Render to a raster you can look at (source-aware).** Use the helper:

   ```bash
   python3 "$REVIEW_FIGURE_DIR/helpers/render.py" <path> [--dpi 200] [--allow-exec]
   ```

   - raster (`.png`/`.jpg`) and `.pdf` → read directly (the helper passes them through).
   - `.typ` → compiled to PNG via `typst`.
   - `.svg` → converted to PNG via the first available of `rsvg-convert` / `inkscape` / `cairosvg`.
   - matplotlib `.py` → rendered **only** with `--allow-exec` (open figures captured to PNG). Confirm with the user before passing `--allow-exec`; otherwise prefer an already-rendered output, or ask for a PNG.
   - The helper prints the viewable PNG path(s) to stdout. If it fails (no renderer available), **ask the user to export a PNG** — do not score an unseen figure.

   Then **read the produced raster** with your image-reading ability. When the source exists, also read it as text so fixes can cite a line/parameter.
4. **Classify each figure** as **scientific plot** (quantitative axes / data series) or **general/schematic** (diagram, flowchart, conceptual art). State the classification so the user can override. General rules apply to all; scientific rules add on only for plots.

Do not score a figure before you have looked at its rendered raster.

---

## Phase 1 — Score against the rubric

For each figure, view the render (and source, if available) and rate every applicable rule. Each finding has this shape:

```
{ rule:      G1–G11 or S1–S9,
  rating:    pass | warn | fail,
  location:  where in the figure (panel, region, the offending element),
  observation: what you see, in one sentence,
  fix:       a concrete change — and the source line/parameter when source is available,
  severity:  high | med | low   (omit for pass) }
```

- Judge S1/S9 **against the Phase-0 display context**, not the on-screen render size.
- Ground each finding in something visible in the raster (or a line in the source). Where a call is subjective, say so rather than asserting.
- The per-rule "good looks like / flag when" detail is in `skills/how-to-review-figure/checklist.md` — walk it as you score.

---

## Phase 2 — Deliver

Print, per figure:

1. **Header** — file, classification (general / scientific), and the display context used.
2. **Scorecard table** — rule → rating (✓ / ⚠ / ✗) → one-line note.
3. **Severity-ranked findings** — high → low, each with its concrete fix.
4. **Top fixes** — a short prioritized list of the highest-leverage changes.

For a multi-figure run, add a brief cross-figure summary (shared problems, inconsistencies across the set).

Then **offer to save**: only on a yes, write `figure-review-YYYY-MM-DD.md` beside the reviewed figure(s) (or a path the user gives), using the same structure. This matches the repo's dated-output convention (cf. `review-paper`).

---

## Reused vs. new

**Reused:** the dated-output convention and severity-rubric shape from `review-paper`; `write-paper`'s Figure Rulebook for the *why* behind plotting conventions (referenced, not restated).

**New here:** the render-then-look protocol (Phase 0), the general/scientific classification gate, the 18-rule visual-design rubric, and `helpers/render.py` (normalize any figure input to a viewable PNG).

---

## Common mistakes

| Mistake | Instead |
|---|---|
| Scoring a figure you never rendered | Phase 0 step 3: render and look first; ask for a PNG if rendering fails. |
| Judging "text too small" with no context | Phase 0 step 2 fixes the intended display size before S1/S9. |
| Applying scientific rules to a schematic | Classify first; S-rules add on only for plots. |
| Editing the figure or its source | Report-only — suggest, never apply. |
| Running a matplotlib `.py` silently | Render `.py` only with `--allow-exec` after user confirmation; else use existing output or ask for a PNG. |
| Asserting a subjective taste call as fact | Mark subjective findings as opinion; ground the rest in the raster/source. |

---

## Integrations

- **Rendering / normalize-to-PNG:** `skills/how-to-review-figure/helpers/render.py`.
- **Full rubric checklist:** `skills/how-to-review-figure/checklist.md`.
- **Figure-text integration, captions, orphan figures:** `review-paper` (different concern).
- **Plotting-convention rationale:** `write-paper` Figure Rulebook.
Pliki w paczce (3)
  • SKILL.md 10 KB
  • checklist.md 8 KB
  • helpers/render.py 7 KB

Wersje

W bazie nie ma innych skilli o nazwie how-to-review-figure.

Migawka bazy z 28.10.2026 · wersja paczki 0017d30caa2f (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100figure-library
    Przeszukuje, wybiera, importuje, recenzuje i publikuje zasoby wykresów naukowych w Scientific Figure Library oraz zarządza wspólną biblioteką rysunków.
  • 90figure-qa
    Sprawdza rysunek naukowy pod kątem zgodności z wymogami czasopisma, wyrównania, poprawności palety i czytelności tekstu, dla SVG, rastrów, skryptów wykresów i figur złożonych.
  • 90plot-ml-figure
    Wybiera bibliotekę do wykresu ML: pandas, seaborn, plotly lub matplotlib, zanim powstanie kod rysunku lub zapis wykresu.
  • 100tavotto-figure
    Rysuje wykresy w matplotlib do publikacji naukowych, dopracowuje je w Tavotto i eksportuje wektorowe PDF zgodne z wymogami czasopisma.
  • 100figure-rhetoric
    Ocenia, czy rysunki i wykresy w manuskrypcie skutecznie wspierają tezy, w ośmiu wymiarach: typ wykresu, osie, hierarchia, gęstość danych, podpisy i narracja.
  • 100scientific-figure
    Tworzy rysunki naukowe do publikacji: składa wielopanelowe figury, eksportuje je do PDF i przygotowuje w stylu czasopism, takich jak Nature.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.