agentleFS
arnaugonzalezarnaugonzalez/infographic-post-skill/skills/infographic/SKILL.md

infographic

Skill1 starsChanged 23 days agoMITView on GitHub

Create professional, designer-quality infographics from codebases, data, text, or concepts. TRIGGERS — invoke this skill when the user mentions ANY of: infographics, data visualization, visual summaries, architecture diagrams, system design visuals, process diagrams, comparison visuals, cheat sheets, "for linkedin", "linkedin infographic", "linkedin diagram", "linkedin post", "make data visual", "turn this into a graphic", "pretty", "make pretty", "architecture infographic", "tech stack diagram", "explain as infographic" MULTILINGUAL TRIGGERS — also activate for: "infografía", "infográfico", "diagrama de arquitectura", "para linkedin", "infographie", "Infografik", "infografica" VERSIONING — when the user says "next version" / "nueva version" / "new version" in any language, run scripts/version_output.py before generating.

  • Reads credentials

13 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 5

    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. Distinctive:

    Ask the user or infer from context:

    line 60
  2. Very specific:

    Avoid gemini-3.1-flash-image at 1K (scored last: garbled text, missing items) and gemini-3.1-flash-lite-image except for throwaway drafts.

    line 152
  3. Very specific:

    Write page.html that follows the brief exactly.

    line 167
  4. Distinctive:

    If you can view images, look at the PNG and fix overlaps or text under ~16px before delivering.

    line 175
  5. Distinctive:

    Check which subscription CLIs and credentials are available on your machine:

    line 195
  6. Distinctive:

    When the user says "next version" / "nueva versión" in any language:

    line 262
  7. Distinctive:

    Read before customizing templates:

    line 296

“Common” is measured: kept by at least 6 in 10 of the 10 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

Infographic Skill

Generate publication-ready infographics from codebases, data, or text. Renderers: in-session Claude HTML ($0), Claude Opus HTML, Gemini 3 Pro Image, Jinja template, Matplotlib.


Quick Reference — What Command to Run

User saysCommand
"Make an infographic of this project"python3 scripts/generate_pretty.py --codebase . --output infographic.png
"Architecture infographic for LinkedIn"python3 scripts/generate_pretty.py --codebase . --style editorial --output infographic.png
"Compare before vs after"python3 scripts/generate_pretty.py --codebase . --infographic-type comparison --output compare.png
"Explain how auth works as infographic"python3 scripts/generate_pretty.py --codebase . --infographic-type feature --output feature.png
"Show the deployment pipeline"python3 scripts/generate_pretty.py --codebase . --infographic-type process --output process.png
"Cheat sheet of our API"python3 scripts/generate_pretty.py --codebase . --infographic-type cheatsheet --output cheatsheet.png
"Make it look less like AI" / "in my style"Add --style-dir <folder with the user's own .html graphics>
"Technical / dark / poster look"Add --style blueprint, terminal, swiss or brutalist
"Banner for GitHub / X"Add --format landscape (1280×640)
"Make it cheap / budget mode"In Claude Code: in-session mode ($0). Otherwise --renderer template
"LinkedIn posts from codebase"python3 scripts/generate_posts.py . --language en
"Quality audit"python3 scripts/oss_audit.py --root .
"Pretty KPI dashboard"python3 scripts/generate_pretty.py --text "Revenue $2.4M, NPS 72" --type dashboard --output kpis.png

Step 1 — Determine the Infographic Type

Ask the user or infer from context:

TypeFlagWhen to use
architecture--infographic-type architectureDefault. System components + data flow.
comparison--infographic-type comparisonBefore/after, v1 vs v2, old vs new.
feature--infographic-type featureHow a specific feature works step-by-step.
process--infographic-type processPipeline, workflow, sequential stages.
cheatsheet--infographic-type cheatsheetReference card, API endpoints, config options.

Step 2 — Determine the Art Direction

The goal is a graphic that does not look like every other AI infographic. Pick ONE archetype (full descriptions in scripts/prompts/archetypes.md):

ArchetypeFlagLook
editorial--style editorialDefault. Paper and ink, display serif, numbered rows, one accent. Magazine page.
blueprint--style blueprintEngineering drawing: grid, monospace labels, outlined boxes, one signal color.
terminal--style terminalOne monospace family; command, output and the line that matters.
swiss--style swissPoster: neo-grotesque, strict grid, a huge number, one primary color.
brutalist--style brutalistZine: thick borders, heavy grotesque, one loud flat color block.

Canvas: --format portrait (1080×1350, default, best on LinkedIn), square (1080×1080) or landscape (1280×640, GitHub social preview).

The brief makes the model write a thesis/hero/archetype/cut comment before drawing, keep ~12 elements, and avoid a banned list (gradients, glow, glassmorphism, card grids, emoji, purple, Inter as display face, generic subtitles). Reference pages in style/ (the author's own graphics) are added to the prompt; point --style-dir (or INFG_STYLE_DIR) at a folder of the user's own .html graphics to make the output match their style. --finish prints a warning for every banned pattern it finds and, after rendering, for every piece of text that overlaps another block or leaves the canvas. If there are warnings, fix the HTML and run --finish again.

Old names still work: modern-light → editorial, modern-dark → blueprint, illustrated → swiss.

Step 3 — Generate

From a codebase (most common)

python3 scripts/generate_pretty.py \
  --codebase /path/to/project \
  --title "My App" \
  --infographic-type architecture \
  --style editorial \
  --output infographic.png

The pipeline:

  1. project_digest.py builds an architecture-first digest (tree, manifests, README) — ~1.5–5k tokens
  2. content_structurer.py sends it to an LLM → structured JSON (Haiku 5.5 ~$0.001 / Gemini 3.8 Flash ~$0.012)
  3. The renderer chosen by --renderer produces the PNG (see Rendering Modes)
  4. Falls back to the HTML template if the image API fails

From inline data

# Quick architecture from text
python3 scripts/generate_pretty.py \
  --layers "Frontend:React,Next.js|Backend:FastAPI|Database:PostgreSQL,Redis" \
  --title "My App" --output infographic.png

# KPI dashboard
python3 scripts/generate_pretty.py \
  --text "Revenue $2.4M (+18%), NPS 72, Churn 2.1%" \
  --type dashboard --title "Q3 KPIs" --output kpis.png

LinkedIn posts from codebase

python3 scripts/generate_posts.py /path/to/project --language en

Generates two posts (technical + business angle) → stdout + linkedin_posts.md.


Rendering Modes

Choose with --renderer (default auto). Scores: blind benchmark, 3 real codebases × 2 judges, mean of 6 criteria out of 10 (benchmark/RESULTS.md, Oct 2026).

RendererFlag$/imageScorePick it when
In-session Claude HTMLsee below$0≈7.0You are running inside Claude Code — always prefer this
Claude HTML (Opus 5.5, effort low)--renderer claude-html~$0.187.00Exact names/completeness matter (technical audience)
Gemini image (gemini-3-pro-image, 2K)--renderer image$0.1346.97Maximum visual punch, real-looking logos
Jinja template--renderer template$05.14Offline / no keys (small text — weak on phones)

auto = Gemini image if INFG_API_KEY is set, else Claude HTML if ANTHROPIC_API_KEY is set, else template. Avoid gemini-3.1-flash-image at 1K (scored last: garbled text, missing items) and gemini-3.1-flash-lite-image except for throwaway drafts.

🧠 In-session mode (recommended inside Claude Code — no API cost)

You (the agent) are the designer; only structuring needs a cheap API call.

# 1. Structure the codebase and save the spec (Haiku 5.5, ~$0.001) — template render is free
python3 scripts/generate_pretty.py --codebase /path/to/project --renderer template \
  --save-spec spec.json --output draft.png
# 2. Print the design brief
python3 scripts/claude_html_renderer.py --spec spec.json --style editorial --print-brief
  1. Write page.html that follows the brief exactly. Use <span class="logo" data-icon="Tech Name"></span> for every technology (real brand SVGs or monograms are injected). Keep every name exactly as in the spec.
  2. Finish and screenshot:
python3 scripts/claude_html_renderer.py --finish page.html --output infographic.png   # 2160×2160 PNG

If you can view images, look at the PNG and fix overlaps or text under ~16px before delivering.

🎨 API modes

python3 scripts/generate_pretty.py --codebase . --renderer claude-html --output infographic.png
python3 scripts/generate_pretty.py --codebase . --renderer image --output infographic.png

📊 Matplotlib (fully offline — free)

python3 scripts/parse_context.py --root . --output arch.json
python3 scripts/generate_linkedin_arch.py --config arch.json --output arch.png

Choosing a backend and model

Check which subscription CLIs and credentials are available on your machine:

python3 scripts/doctor.py
BackendBinary / ModeDefault modelBilling
sessionHost agent (CLAUDECODE=1)Host modelSubscription
claudeclaude -pclaude-opus-5-5Subscription
agyagy -pclaude-opus-5-5-lowSubscription
codexcodex execCLI defaultSubscription
copilotcopilot -pautoSubscription
opencodeopencode runCLI defaultSubscription
apiAnthropic / AI Studio SDKclaude-haiku-5-5 / gemini-3.8-flashPaid API (per use)
  • Rule: auto never picks a paid API. Resolution order is --backend / --model > INFG_BACKEND / INFG_MODEL > auto (session when CLAUDECODE is set, otherwise the first installed CLI in claude, agy, codex, copilot, opencode). To use paid API keys (ANTHROPIC_API_KEY or INFG_API_KEY), pass --backend api explicitly (or --renderer image).
  • Inspect the exact prompt (brief + backend contract + model-family note) without running a model:
    python3 scripts/claude_html_renderer.py --backend agy --model gemini-4-argon-high --spec spec.json --print-prompt

CLI Reference

python3 scripts/generate_pretty.py \
  --codebase <dir>                    # Read and analyze a codebase
  --title "Title"                     # Override title
  --infographic-type <type>           # architecture|comparison|feature|process|cheatsheet
  --style <archetype>                 # editorial|blueprint|terminal|swiss|brutalist
  --format <canvas>                   # portrait|square|landscape (HTML renderer)
  --style-dir <dir>                   # your own .html graphics as reference
  --renderer <r>                      # auto|image|claude-html|template (default: auto)
  --save-spec spec.json               # Save structured JSON (for in-session mode)
  --model <gemini-model>              # Image model (default: gemini-3-pro-image, 2K)
  --llm-model <model>                 # claude-* | gemini-* | vendor/model (OpenRouter); default: auto
  --output <path>                     # Output file
  --legacy-html                       # Force HTML template rendering
  --template <name>                   # Jinja2 template name
  --learnings "topic"                 # Focus infographic on specific technologies
  --author "Name"                     # Author attribution
  --cta "Follow text"                 # Footer call-to-action

Environment Variables (.env)

ANTHROPIC_API_KEY=                    # Claude: structuring (Haiku 5.5) + claude-html renderer (Opus 5.5)
INFG_API_KEY=                         # Google AI Studio: gemini-3-pro-image + gemini structuring
INFG_LLM_MODEL=                       # Empty = auto (claude-haiku-5-5, else gemini-3.8-flash)
INFG_IMAGE_SIZE=2K                    # 1K | 2K | 4K for Gemini image models
INFG_OPENROUTER_API_KEY=              # Only for vendor/model ids

# Optional
INFG_VERTEX_PROJECT=                  # Vertex AI project ID (alternative to AI Studio)
INFG_IMAGE_MODEL=                     # Override default image model
INFG_LLM_PROVIDER=                    # Force provider: gemini or openrouter

Versioned Output

When the user says "next version" / "nueva versión" in any language:

OUTPUT=$(python3 scripts/version_output.py --root .)
python3 scripts/generate_pretty.py --codebase . --output "$OUTPUT/infographic.png"

Project Scripts

ScriptPurpose
generate_pretty.pyMain entry point — routes to AI image / HTML template / legacy
project_digest.pyArchitecture-first codebase digest (tree, manifests, README)
content_structurer.pyLLM → structured JSON (Anthropic / Gemini / OpenRouter)
claude_html_renderer.pyClaude/in-session HTML → logo injection → 2160px PNG
image_prompt_builder.pyJSON → designer-quality image prompt (70+ brand icons)
template_renderer.pyJinja2 HTML template rendering with icon enrichment
icon_registry.py3,414 brand SVG icons via simplepycons + fuzzy matching
model_quality.pyLLM tier classification (1/2/3) + CLI warnings
read_codebase.pyNoise-filtered codebase reader with token budget
generate_posts.pyLinkedIn dual-angle post generator (tech + business)
generate.pyCore matplotlib PNG generator
generate_html.pyInteractive HTML generator (Chart.js)
generate_linkedin_arch.pyMatplotlib architecture diagrams
parse_context.pyProject context parser → arch.json
version_output.pyVersioned output directory manager
oss_audit.pyOSS quality audit (coverage, docs, complexity)

Design References

Read before customizing templates:

  • references/design-principles.md — Visual hierarchy, color, typography rules
  • references/chart-selection.md — Chart type decision matrix
  • references/competitive-research.md — Gap analysis vs Napkin AI, Canva, etc.
  • references/visual-quality-patterns.md — Premium CSS/SVG techniques
  • references/linkedin-visual-analysis.md — Real LinkedIn post analysis

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.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.