agentleFS
raja21068raja21068/AutoResearch/skills/aris/figure-spec/SKILL.md

figure-spec

Skill2 starsChanged 6 months agoMITView on GitHub

Generate deterministic publication-quality architecture, workflow, and pipeline diagrams from structured JSON (FigureSpec) into editable SVG. Use when user says \"架构图\", \"workflow 图\", \"pipeline 图\", \"确定性矢量图\", \"figure spec\", \"draw architecture\", or needs precise, editable, publication-ready vector diagrams. Preferred over AI illustration for formal architecture/workflow figures.

We split this skill into the rules it gives an agent

8 rules. 6 are common, 0 are distinctive, and 2 are very specific to this project.

  • 6

    Common

    Most of the 3 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Common:

    Grouping: do entities cluster into named regions?

    line 54
  2. Common:

    Start from a template based on the diagram type:

    line 64
  3. Common:

    If validation fails, inspect the error (missing field, duplicate ID, overlap warning, invalid hex color) and fix the JSON.

    line 114
  4. Common:

    If issues found, edit the JSON spec (never the generated SVG) and re-render.

    line 125
  5. Very specific:

    Run python3 tools/figure_renderer.py schema for the authoritative schema.

    line 153
  6. Common:

    Don't cross-draw long diagonals: if an arrow crosses 3+ rows, rethink the layout

    line 203
  7. Common:

    Don't mix font sizes for same role: keep one size per node category

    line 204
  8. Very specific:

    After each mcp__codex__codex or mcp__codex__codex-reply reviewer call, save the trace following shared-references/review-tracing.md.

    line 221

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

FigureSpec: Deterministic JSON → SVG Figure Generation

Generate publication-quality architecture diagrams, workflow pipelines, audit cascades, and system topology figures as editable SVG vector graphics using a deterministic JSON → SVG renderer.

When to Use This Skill

Use figure-spec for:

  • System architecture diagrams (layered, hub-and-spoke, multi-plane)
  • Workflow / pipeline figures
  • Audit cascade / flow-control diagrams
  • Any structured diagram where node positions, connections, and groupings are semantically important
  • Figures that need to be edited/tweaked later (SVG is plain text)
  • Figures where determinism matters (same spec → same SVG)

Do NOT use for:

  • Data plots (bar/line/scatter) — use /paper-figure
  • Natural/qualitative illustrations — use /paper-illustration
  • Quick state-machine / flowchart — use /mermaid-diagram (lighter syntax)

Core Properties

  • Deterministic: identical FigureSpec JSON always produces identical SVG output (for a fixed renderer version + fonts)
  • Editable: SVG output is plain-text, can be post-edited by hand or programmatically
  • Validated: renderer enforces schema, rejects malformed specs with clear error messages
  • Shape-aware: edge clipping works correctly for rect/rounded/circle/ellipse/diamond
  • CJK support: multi-line labels with proper Chinese character width estimation
  • No external API: runs fully local, no network, no API keys

Tool Location

tools/figure_renderer.py (from ARIS root). Invoke via:

python3 tools/figure_renderer.py render <spec.json> --output <out.svg>
python3 tools/figure_renderer.py validate <spec.json>
python3 tools/figure_renderer.py schema

Workflow

Step 1: Understand the Diagram Goal

From $ARGUMENTS (description or path to PAPER_PLAN.md / NARRATIVE_REPORT.md), identify:

  • Purpose: architecture, workflow, pipeline, audit cascade, topology?
  • Main entities: what are the boxes?
  • Relationships: how do they connect? (uses, produces, calls, verifies, chains)
  • Grouping: do entities cluster into named regions?
  • Hierarchy vs network: stacked layers, left-to-right flow, or central hub?

Step 2: Draft the FigureSpec JSON

Canvas sizing guide:

  • Single-column figure: ~500×350 px
  • Two-column (full-width): ~900×500 px
  • Tall topology: ~700×700 px

Start from a template based on the diagram type:

Architecture (stacked rows):

{
  "canvas": {"width": 900, "height": 520},
  "nodes": [
    {"id": "layer1_label", "label": "Layer 1", "x": 450, "y": 60, ...},
    {"id": "node_a", "label": "A", "x": 180, "y": 120, ...},
    {"id": "node_b", "label": "B", "x": 350, "y": 120, ...}
  ],
  "edges": [...],
  "groups": [
    {"label": "Layer 1", "node_ids": ["node_a", "node_b"], "fill": "#F0F9FF", "stroke": "#BAE6FD"}
  ]
}

Workflow (left-to-right chain):

{
  "canvas": {"width": 900, "height": 300},
  "nodes": [
    {"id": "step1", "label": "Step 1", "x": 100, "y": 150, "shape": "rounded"},
    {"id": "step2", "label": "Step 2", "x": 280, "y": 150, "shape": "rounded"}
  ],
  "edges": [
    {"from": "step1", "to": "step2", "label": "produces"}
  ]
}

Decision diamond:

{"id": "check", "label": "Passes?", "shape": "diamond", "x": 450, "y": 200}

Step 3: Render and Validate

# Validate first
python3 tools/figure_renderer.py validate /tmp/spec.json

# Render to SVG
python3 tools/figure_renderer.py render /tmp/spec.json --output figures/fig_arch.svg

# Convert to PDF for LaTeX inclusion
rsvg-convert -f pdf figures/fig_arch.svg -o figures/fig_arch.pdf

If validation fails, inspect the error (missing field, duplicate ID, overlap warning, invalid hex color) and fix the JSON.

Step 4: Visual Review

Open the SVG/PDF and check:

  • No overlaps: nodes don't collide with each other or group boundaries
  • Readability: font sizes are consistent, labels aren't clipped
  • Edge clarity: arrows hit nodes at clean angles, labels near edges are legible
  • Group alignment: background rectangles frame their members cleanly
  • Color distinction: categories are visually distinct in both color and grayscale

If issues found, edit the JSON spec (never the generated SVG) and re-render.

Step 5: Iterate with Codex Review (Optional, for High-Stakes Figures)

For paper architecture figures, invoke cross-model review:

mcp__codex__codex:
  model: gpt-5.4
  config: {"model_reasoning_effort": "xhigh"}
  prompt: |
    Review this SVG figure for a technical paper (architecture / workflow diagram).

    Spec file: /path/to/spec.json
    Rendered: /path/to/fig.svg

    Evaluate:
    1. Clarity (C): can a reader understand the system from this figure alone?
    2. Readability (R): font sizes, label placement, visual hierarchy
    3. Semantic accuracy (S): do relationships match the described system?

    Score each axis 1-10 and list specific issues to fix.

Iterate until all three axes ≥ 7/10. The ARIS tech report figures went through 5 rounds of this loop to reach C:7/R:7/S:8.

Schema Quick Reference

Run python3 tools/figure_renderer.py schema for the authoritative schema.

Nodes

FieldRequiredDefaultNotes
id✓—Unique
label✓—\n for multi-line
x, y✓—Center coordinates
width, height120, 50
shaperoundedrect / rounded / circle / ellipse / diamond
fill, strokeauto from palette#RRGGBB
text_color#333333
font_size14Override style default

Edges

FieldDefaultNotes
from, torequiredSame = self-loop
label—Short edge label
stylesolidsolid / dashed / dotted
color#555555
curvefalseCurved path

Groups

Rectangular background regions framing a set of nodes:

{"label": "Layer Name", "node_ids": ["a", "b", "c"], "fill": "#EFF6FF", "stroke": "#BFDBFE"}

Design Patterns

Pattern 1: Layered Architecture

Stack rows of related nodes, each row is a group, add inter-layer arrows with semantic labels (uses↓, produces↑, checks↓).

Pattern 2: Hub-and-Spoke

Central node (e.g., Executor), peripheral nodes (skills, tools), solid arrows for primary relations, dashed for feedback.

Pattern 3: Pipeline with Feedback

Left-to-right main flow, feedback arrows curve below with curve: true.

Pattern 4: Audit Cascade

Three-stage horizontal cascade with inputs feeding in from top, outputs exiting right, each stage in its own group.

Anti-Patterns

  • Don't use groups as hierarchy: groups frame peer nodes, not containment
  • Don't nest groups: renderer draws them as background rectangles; nested groups look like Russian dolls
  • Don't cross-draw long diagonals: if an arrow crosses 3+ rows, rethink the layout
  • Don't mix font sizes for same role: keep one size per node category

Output Contract

  • SVG file in figures/ (vector, editable, hand-tweakable)
  • Source FigureSpec JSON saved in figures/specs/ for reproducibility
  • PDF version via rsvg-convert for LaTeX inclusion

Integration with Other Skills

  • /paper-writing (Workflow 3): when illustration: figurespec (default for architecture figures), this skill handles Phase 2b
  • /paper-figure: handles data plots; they complement each other (data + architecture = complete figure set)
  • /paper-illustration: fallback for figures that need natural/qualitative style (method illustrations with photos, qualitative result grids)
  • /mermaid-diagram: lighter alternative for simple flowcharts

Review Tracing

After each mcp__codex__codex or mcp__codex__codex-reply reviewer call, save the trace following shared-references/review-tracing.md. Use tools/save_trace.sh or write files directly to .aris/traces/<skill>/<date>_run<NN>/. Respect the --- trace: parameter (default: full).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.