Chart request
A person asks an agent to review, recommend, evaluate, or explain a chart decision.
Experimental
chartcoach represents visualization design knowledge as guidelines that agents can retrieve, cite, apply, and improve. Each guideline links back to its original sources, so agents can explain where guidance comes from when reviewing charts, recommending encodings, and evaluating trade-offs.
$ npx skills add chartcoach/skills$ claude 'hey $chartcoach, evaluate this chart for mobile use.'Agent workflow
A person asks an agent to review, recommend, evaluate, or explain a chart decision.
The agent searches the Guideline Catalog by label, section role, source reference, and semantic match.
The answer cites the guideline entries it used and names the guidance applied to the chart.
When guidance is missing, weak, or contested, the agent drafts a catalog issue after receiving confirmation so the community can review the proposed guideline entry.
Representation
chartcoach represents each visualization design guideline as a catalog entry that people can author and read while agents can query it. The same entry carries sources, roles, labels, formats, and contribution paths.
A guideline is a Markdown document with a small metadata header and natural-language sections for advice, rationale, context, checks, and fixes.
Guidelines cite papers, standards, and practitioner material, so feedback can name where its recommendation came from.
Agents can ask for the advice, rationale, context, exceptions, costs, mistakes, checks, and fixes separately.
The Guideline Catalog supports semantic search across guideline sections, so agents can retrieve the relevant passage for a chart task.
People and apps can open the same guidance through public pages, Markdown, JSON, Python, TypeScript, and the CLI.
Agent skills give agents a repeatable path from retrieval to cited answer, chart evaluation, and contribution draft.
After human confirmation, agents can draft a GitHub issue for missing or contested guidance in the catalog repository.
Markdown document
advice, context, checks
---
id: direct-labels
title: Use direct labels
labels:
- chart:bar
- task:compare
- quality:readability
---
## Label marks directly <!-- role: advice -->
Place labels next to compared values.
## Why it works <!-- role: reason -->
Direct labels reduce legend lookup work.
## Where it applies <!-- role: context -->
Use this for a small number of bars or series.
## When to keep a legend <!-- role: exceptions -->
Keep a legend when labels would crowd marks.
## Trade-off <!-- role: costs -->
Labels use plot space and may need manual placement.
## Common mistake <!-- role: mistakes -->
Label only the marks readers need to compare in a dense chart.
## Check the chart <!-- role: check -->
Can each value be read without matching color to a legend?
## Fix <!-- role: fix -->
Move labels beside marks and remove the legend.A guideline is a Markdown document with a small metadata header and natural-language sections for advice, rationale, context, checks, and fixes.
Markdown document
advice, context, checks
---
id: direct-labels
title: Use direct labels
labels:
- chart:bar
- task:compare
- quality:readability
---
## Label marks directly <!-- role: advice -->
Place labels next to compared values.
## Why it works <!-- role: reason -->
Direct labels reduce legend lookup work.
## Where it applies <!-- role: context -->
Use this for a small number of bars or series.
## When to keep a legend <!-- role: exceptions -->
Keep a legend when labels would crowd marks.
## Trade-off <!-- role: costs -->
Labels use plot space and may need manual placement.
## Common mistake <!-- role: mistakes -->
Label only the marks readers need to compare in a dense chart.
## Check the chart <!-- role: check -->
Can each value be read without matching color to a legend?
## Fix <!-- role: fix -->
Move labels beside marks and remove the legend.Guidelines cite papers, standards, and practitioner material, so feedback can name where its recommendation came from.
Source references
papers and practice
advice
Place labels next to compared values.
reason
Direct labels reduce legend lookup work.
context
Use this for a small number of bars or series.
exceptions
Keep a legend when labels would crowd marks.
costs
Labels use plot space and may need manual placement.
mistakes
Label only the marks readers need to compare in a dense chart.
check
Can each value be read without matching color to a legend?
fix
Move labels beside marks and remove the legend.
references
Lisa Charlotte Muth
What to consider when using text in data visualizations. Datawrapper Blog, 2022.
Agents can ask for the advice, rationale, context, exceptions, costs, mistakes, checks, and fixes separately.
Role-annotated sections
granular structure
{
"id": "direct-labels",
"title": "Use direct labels",
"labels": [
"chart:bar",
"task:compare",
"quality:readability"
],
"sections": [
{ "role": "advice", "text": "Place labels beside values." },
{ "role": "reason", "text": "Reduce legend lookup work." },
{ "role": "context", "text": "Use with small bar sets." },
{ "role": "exceptions", "text": "Keep legends when labels crowd." },
{ "role": "costs", "text": "Uses plot space." },
{ "role": "mistakes", "text": "Label only compared marks." },
{ "role": "check", "text": "Can values be read directly?" },
{ "role": "fix", "text": "Move labels beside marks." }
],
"references": [
"muth_text_in_data_visualizations_2022"
]
}The Guideline Catalog supports semantic search across guideline sections, so agents can retrieve the relevant passage for a chart task.
Semantic index
role-aware matches
People and apps can open the same guidance through public pages, Markdown, JSON, Python, TypeScript, and the CLI.
Open formats
Markdown, JSON, APIs
from chartcoach import Catalog
catalog = Catalog.open()
entry = catalog.entry("direct-labels")
summary = {
"title": entry["title"],
"labels": entry["labels"],
"references": entry["references"],
}from chartcoach import Catalog
catalog = Catalog.open()
entry = catalog.entry("direct-labels")
summary = {
"title": entry["title"],
"labels": entry["labels"],
"references": entry["references"],
}import { DEFAULT_CATALOG, loadCatalog } from "@chartcoach/catalog"
const { entriesUrl, manifestUrl } = DEFAULT_CATALOG
const entries = await (await fetch(entriesUrl)).arrayBuffer()
const manifestText = await (await fetch(manifestUrl)).text()
const catalog = await loadCatalog({ entries, manifestText })
const entry = catalog.require("direct-labels")
const summary = {
title: entry.title,
labels: entry.labels,
references: entry.references,
}chartcoach catalog read direct-labels
chartcoach catalog find "legend lookup in bar chart"
chartcoach catalog cite direct-labelsAgent skills give agents a repeatable path from retrieval to cited answer, chart evaluation, and contribution draft.
Agent skills
retrieve, cite, apply
chartcoach/skills
skill runevaluate chart
retrieve
guideline
cite
source
answer
advice
After human confirmation, agents can draft a GitHub issue for missing or contested guidance in the catalog repository.
catalog repository
GitHub issues and review
The chart issue needs a new guideline.
Draft the issue with source references, context, and proposed labels.
Review the proposed guideline entry in the catalog repository.
Research
chartcoach is developed by researchers from ETH Zürich, Carnegie Mellon University, the University of Vienna, and MBZUAI. It builds on work in visualization recommendation, chart linting, rule-based systems like Draco, accessibility guidance, data journalism, and situated visualization feedback.
The Guideline Catalog brings that research into a form agents can cite and people can author, review, and inspect.
Experimental
chartcoach is a research prototype for chart agents, critique tools, evaluation workflows, and visualization design systems. Browse the Guideline Catalog, request missing guidance in GitHub, or contact the research team about deployment and collaboration.