agentleFS
fabioc-alohafabioc-aloha/Alex_ACT_ONE/skills/chart-big-idea/SKILL.md

chart-big-idea

Skill0 starsChanged 9 days agoMITView on GitHub

Distill the one-sentence Big Idea, story arc, audience, and style stance for a chart BEFORE picking a chart type. Starts by questioning intent — whether the artifact should exist at all, and whether the stated purpose is the real one. Reads the surrounding docs / prose / ticket for an existing Big Idea first, then helps the user articulate one via a 3-question elicitation ladder if none is found. Asks whether the user wants a TRADITIONAL (safe) or INNOVATIVE (higher-impact, higher-risk) treatment. Use before invoking the flint-chart skill or the /render-chart prompt whenever the user's ask is 'chart this', 'visualize', 'make a chart', 'show the data', or when framing is unclear.

The file

We split this skill into the rules it gives an agent

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

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do NOT invoke when:

    line 25
  2. Distinctive:

    Before drafting the Big Idea, verify the figure earns its place.

    line 60
  3. Distinctive:

    If none apply, the figure does not earn its place.

    line 68
  4. Distinctive:

    Deletion test: if the surrounding prose reads fine when the figure is removed, the figure is decorative.

    line 70
  5. Distinctive:

    If a claim is not computable, replace it with an evidence boundary that names the missing input.

    line 112
  6. Distinctive:

    If the user hasn't told you, infer defaults: Glance / General / Persuasive for external audiences, Read / Domain-fluent / Decision-critical …

    line 153
  7. Distinctive:

    Rule of thumb: default to TRADITIONAL when the audience is glance-time or general-fluency.

    line 192
  8. Distinctive:

    When color carries meaning (categorical distinction, severity, target vs actual), pair it with a second cue — shape, label, position, or …

    line 206

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “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

Chart Big Idea

Frame the chart before you pick it. A chart is a rhetorical act — it makes an argument about the data. If you can't state the argument in one sentence, the chart type will be wrong no matter how it's rendered.

This skill produces a Chart Brief — a short structured record of Big Idea + intent + story arc + audience + style stance + theme / tone stance — which then feeds the flint-chart skill's §0.2 selection table.

Scope. Steps 0, 1, and 3 — read the context, state the claim in one sentence, read the audience — apply to any communication artifact: a slide, a memo, a diagram, a report section. Steps 2, 4, and 5 are chart machinery, which is why this skill is chart-named. If you are framing something that is not a chart, run Steps 0–1 and 3 and stop there.

When to invoke

Invoke this skill BEFORE flint-chart selection when any of these fire:

  • User says "chart this", "visualize this", "make a chart", "show me the data"
  • User attaches a dataset without a stated question
  • User says "which chart should I use for..." and gives a data description
  • The /render-chart prompt fires — this skill is its Step 0
  • Existing chart is being redesigned ("this doesn't land — can we improve it?")

Do NOT invoke when:

  • User provides a fully-formed spec asking to render it verbatim
  • User is iterating on style/color/spacing of an already-chosen chart type
  • The chart is diagnostic-only (e.g. exploratory data profiling); framing overhead isn't earned

Step 0: Read the surrounding context first (before asking anything)

Before you ask the user for the Big Idea, look for it in the material they've already produced. Often the Big Idea is written in prose next to where the chart will live — you just have to find it and lift it. Interrogating the user for a claim they already wrote is wasteful and slightly insulting.

Where to look, in order:

SourceWhat to grep forExample
The paragraph immediately before/after the chart's insertion pointClaim-shaped sentences ("...shows that...", "...demonstrates...", "...surprisingly...", "...contrary to...", "...three of the last five...")Paper section says "Skeptics span the full Likert range" — that's a Big Idea seed
The doc / report / notebook section heading the chart sits underThe heading often IS the topic; the sentence beneath is often the Big IdeaSection titled "Clusters differ in shape, not just center"
The PR description, ticket, issue, or commit message that spawned the chart requestThe "why" that justified opening the ticket"Need to show finance the West is pulling away"
Any existing chart caption, figure title, alt= text, or prior version of this chartPrior authors' framing you can inherit or sharpenOld caption: "BI by cluster with SD bars" (topic — needs upgrade)
The user's own recent messages in this conversationAdjectives, verbs, and framings they used to describe the findingUser said "the Skeptics story is vivid" — "vivid" is the tell
README / abstract / one-pager / project overviewConfirms the audience the whole document is targetingFixes Step 3 audience-read without a separate question
Adjacent charts in the same docTheir captions establish the narrative rhythm this chart plugs intoFig06 caption sets up the comparison; fig07 caption should extend it

What to do with what you find:

  • Found a claim-shaped sentence: draft the Big Idea from it, show it to the user in Step 1 as "Here's what I think you're arguing — confirm or correct?", let them fix in one hop. Do not silently rewrite the user's own words — if their prose already states the Big Idea, quote it verbatim in the Brief and cite the source.
  • Found only a topic: skip to Step 1 elicitation with the topic as your anchor.
  • Found nothing (cold ask, no doc, no ticket): go directly to Step 1 elicitation with no anchor.
  • Found conflicting framings (e.g. ticket says one thing, prose says another): surface the conflict to the user before drafting — "the ticket asks for X but the section prose argues Y — which is the chart supposed to land?"

Skip Step 0 when: the user pasted a Big Idea directly ("Chart this: X grew 3× faster than Y"). Context-gathering isn't needed when the framing arrived on the request.

Time budget: Step 0 should take under a minute. If you're spelunking through 20 files trying to reconstruct intent, stop and ask the user — the doc genuinely doesn't have it.

Step 0.5: What earns a figure — the 5-criteria gate

Before drafting the Big Idea, verify the figure earns its place. A figure earns its place when it does one (or more) of:

  1. Compresses a decision rule — matrix, decision tree, or before/after that turns branching prose into a single scan
  2. Shows a temporal or procedural sequence — a loop, flow, or timeline the prose can only enumerate
  3. Makes an abstraction concrete — labeled anatomy, storyboard, worked example that anchors an otherwise floating concept
  4. Surfaces a hidden failure mode — a side-by-side that reveals a defect the reader would miss in prose
  5. Anchors a recurring visual concept — a figure the reader will need to reference repeatedly across sections

If none apply, the figure does not earn its place. Restate the claim as a sentence or a table instead. An unearned figure adds visual weight without adding argument, which weakens the surrounding argument.

Deletion test: if the surrounding prose reads fine when the figure is removed, the figure is decorative. If the prose has to be substantially rewritten to compensate, the figure was doing real work.

Adapted from a published decision-analysis book's figure-authoring practice.

Step 1: The Big Idea (one sentence)

First, check the intent — not just the finding

The Big Idea asks what the data shows. Before that, ask what this artifact is actually for. Answer both from Step 0 context where you can; escalate to the user only when the answer is unclear or uncomfortable.

  1. Should this exist at all? A chart with no claim is decoration. If Step 0 surfaced no argument and the data holds no surprise, say so and offer the cheaper alternative — a sentence, a table, or nothing. A competent chart nobody needed is a failure that looks like success.
  2. Is the stated purpose the real one? Sometimes the request is "show that X worked" rather than "show what X did" — a decision already made, looking for a picture to ratify it. That is a legitimate thing to build, but name it: it belongs in the Brief as Persuasive, and the honest version makes its case without suppressing the counter-evidence.

If the intended message and the data disagree, surface it before drafting the Big Idea. Do not quietly pick the chart that makes the requested point. Say what the data supports, name the gap, and let the user decide. This is the one moment in the workflow where the right answer may be "not this chart" — every later step assumes the chart should exist.

Classify the intent before choosing a treatment:

IntentJob
ExplanatoryMake one supported finding clear and memorable.
ExploratoryHelp the reader inspect patterns without pretending the conclusion is settled.
PersuasiveSupport a decision or position honestly, including material counter-evidence.

Load and follow big-idea for shared claim distillation, audience, and narrative stance. This chart workflow owns the analytical intent, population, denominator, units, treatment choice, and Chart Brief. For a vague dataset request, use the chart-specific elicitation examples; do not duplicate the general distillation procedure or redirect back to this skill before completing the shared method.

Step 1.5: Claim computability

A Big Idea the data cannot support is a correctness failure, not a framing problem. Before spending effort on arc and style, make the claim's evidence executable. One row per decision-bearing claim:

ClaimRequired fieldsFormulaGrainStatus
"Email returns $3.20 per $1"pipeline, campaign spendpipeline / spendcampaign-quarterComputable

Four rules decide the Status column:

  • Denominator present. A ratio, rate, or "per" claim needs its denominator in the source. A larger numerator is not evidence of greater efficiency.
  • Baseline named. "Jan to Jun" is not "versus prior period." State which one the claim means.
  • Kind separated. Observations, calculations, scenarios, and forecasts are different claims. Never present a scenario as an observed result.
  • Grain matches. Required fields must exist at the grain the claim asserts, not a coarser one.

If a claim is not computable, replace it with an evidence boundary that names the missing input. Do not estimate silently, and do not let the chart imply a number the data never contained.

Computable is not computed. Establish material shares/ratios with an executed script, query, or formula and retain its output as evidence. If execution is denied or unavailable, use another permitted deterministic tool or label the derived claim unverified; do not silently replace the failed check with prose arithmetic.

Adapted from the Claim Computability Gate in an earlier visual-storytelling curriculum, absorbed into this plugin.

Step 2: Story arc

Once the Big Idea is written, classify the story arc. This narrows chart families before flint-chart §0.2 fires:

Story arcWhat it arguesChart-family shortlist
ComparisonA > B, A ≠ B, rankingBar, dot plot, lollipop, bullet
Change over timeX trended up/down/inflectedLine, area, slope, small-multiple line
CompositionX is made up of partsStacked bar, treemap, waffle, donut (rarely pie)
DistributionX is spread this wayHistogram, box, violin, strip, jittered dot, density
RelationshipX co-varies with YScatter, bubble, connected scatter, hexbin
DeviationX differs from a benchmark / expectationDiverging bar, dumbbell, bullet, error-bar
FlowX moves from A to BSankey, chord, alluvial
AnomalyX is unusualAnnotated line/scatter with the anomaly highlighted
Ranking-with-contextX's position vs peers and distribution shapeLollipop on distribution, dot plot with reference bands

A single chart usually leans on ONE arc. If the Big Idea needs two arcs (e.g. "compare + show distribution"), that's the hybrid signal — flag it for Step 4.

Step 3: Audience + stakes

Three quick reads. Do not turn this into an interview:

ReadOptionsImpact on chart choice
Reading timeGlance (5s) / Read (30s) / Study (2min+)Glance → traditional + one message. Study → can afford complexity.
Statistical fluencyGeneral / Domain-fluent / TechnicalFluent audiences can read box/violin/parallel coords; general audiences cannot.
StakesInformational / Persuasive / Decision-criticalDecision-critical earns a title-sentence overlay and annotation; informational may not.

If the user hasn't told you, infer defaults: Glance / General / Persuasive for external audiences, Read / Domain-fluent / Decision-critical for internal analytics work.

Step 4: Style stance — TRADITIONAL vs INNOVATIVE

Ask the user explicitly (unless they already stated a preference):

"Do you want the traditional treatment — a familiar chart everyone will read at a glance — or an innovative treatment that shows more of the story but costs the reader a few seconds of study?"

Both are valid design choices. The tradeoff:

DimensionTRADITIONAL (safe)INNOVATIVE (higher-impact, higher-risk)
LegibilityUniversal — no explanation neededNeeds a caption, sometimes a legend walkthrough
Information densityOne dimension per chartMultiple dimensions layered
Risk of misreadingLowModerate — some readers will bounce off
Best forExecutive dashboards, first exposure, glance-time audiencesAnalytical narratives, technical reports, curated presentations
Comparison exampleBar chart of cluster meansLollipop on strip-jitter distribution
Change-over-time exampleLine chartSlope chart (first + last only) or connected scatter
Distribution exampleHistogramRidgeline plot or beeswarm
Composition exampleStacked barWaffle grid or treemap
Deviation exampleBar with target lineBullet chart or dumbbell
Ranking + context exampleRanked barDot plot with reference band, or lollipop on distribution

Style-stance × Story-arc → exact chartType candidates. Confirm the selected backend's live list_chart_types catalog before handing a type to Flint; these names are not snake_case aliases, and a composite treatment is not one chartType.

Story arcTraditional pickInnovative pick
ComparisonBar Chart or Grouped Bar ChartLollipop Chart
Change over timeLine ChartSlope Chart or annotated Line Chart
CompositionStacked Bar ChartTreemap or faceted Bar Chart where supported
DistributionHistogram or Bar Chart of prepared binsStrip Plot, Boxplot, or Violin Plot where supported
RelationshipScatter PlotScatter Plot with color/size, or Regression
DeviationBar Chart with a supported reference treatmentBullet Chart or Ranged Dot Plot
FlowBar Chart of prepared source/target countsSankey Diagram where supported
AnomalyLine Chart with a supported annotationLine Chart with a separately verified reference treatment
Ranking-with-contextRanked Bar ChartLollipop Chart and Strip Plot as separate/composed treatments, verified after rendering

Rule of thumb: default to TRADITIONAL when the audience is glance-time or general-fluency. Default to INNOVATIVE when the audience is domain-fluent AND has 30+ seconds of study time AND the extra dimensions materially strengthen the Big Idea. When in doubt, ask.

Step 4.5: Focus discipline (executing the chosen stance)

Style stance decides scope. Focus discipline decides execution. Three rules govern the mark-level choices once Step 4 has picked TRADITIONAL or INNOVATIVE.

One pre-attentive attribute per emphasis

Color, size, position, and typeface are pre-attentive attributes — the eye finds them without scanning. Use exactly one to mark the point of the Big Idea. Two adds no signal (the reader already found it). Three degrades the signal (the emphasis reads as random rather than intentional).

Example: in a bar chart where the story is one region's shortfall, most bars in slate-300 and the story-carrying bar in blue-800 is enough. Adding stroke-width AND size on top is over-encoding.

Redundant encoding for accessibility

When color carries meaning (categorical distinction, severity, target vs actual), pair it with a second cue — shape, label, position, or texture. Roughly 8% of male readers cannot reliably distinguish red from green; a color-only encoding fails them silently. Color + shape and color + label both survive deuteranopia.

Deuteranopia-simulate any red/green pairing (browser DevTools, macOS Accessibility Inspector, or a color-blindness plug-in) before shipping.

BEFORE-only anti-pattern figures: neutral title

When a figure teaches by showing failure (a flawed chart the reader is asked to diagnose), keep the title and subtitle neutral. "As generated" / "First draft" / "Cold Copilot output" describe the artifact state without previewing what's wrong. Editorializing in the title spoils the diagnostic task the figure exists to teach.

Paired BEFORE/AFTER figures are the exception: the AFTER panel already reveals the argument, so the title can name it directly.

Adapted from a published decision-analysis book's figure-authoring practice.

Step 5: Write the Chart Brief and hand off

Output a compact brief (fits in one message, ~10 lines) that the flint-chart skill or /render-chart prompt consumes directly:

### Chart Brief

- **Big Idea**: <one sentence, from Step 1>
- **Intent**: EXPLANATORY | EXPLORATORY | PERSUASIVE
- **Story arc**: <one label from Step 2 taxonomy>
- **Audience**: <reading-time> / <fluency> / <stakes>
- **Style stance**: TRADITIONAL | INNOVATIVE (with one-sentence rationale)
- **Theme / tone stance**: <e.g. restrained editorial, playful explainer, technical instrument, executive deck>
- **Suggested chartType(s)**: <1-2 from the Step 4 crosstab>
- **Alternates considered**: <1-2 the crosstab surfaced but you didn't pick, with why>
- **Anti-patterns to avoid**: <call out any per flint-chart §0.3 that this brief risks>

Then invoke flint-chart §0.2 with the brief as context. The brief locks the framing; §0.2 handles the mechanical chartType lookup + Flint coverage check.

For a standalone Vega-Lite chart, the Big Idea becomes chart_spec.title and the measurement context becomes chart_spec.subtitle. This preserves the claim when the chart travels without the surrounding prose.

Anti-patterns

Anti-patternCorrection
Asking the user for the Big Idea without doing Step 0 firstRead the surrounding prose / ticket / section heading first. If the user already wrote the claim, lift it — don't make them re-articulate it.
Accepting the stated purpose without testing itAsk what the artifact is really for before writing the claim. A chart built to ratify a decision already made is legitimate, but it belongs in the Brief as Persuasive — not dressed as neutral reporting.
Framing a chart that should not existIf the data holds no claim, the honest output is a sentence or a table, not a well-framed chart. Say so before Step 2.
Silently rewriting the user's own claim into your preferred phrasingIf Step 0 surfaces their sentence, quote it verbatim in the Brief and cite the source. Sharpen only with permission.
Writing a topic ("Q3 metrics") and calling it a Big IdeaTopics don't argue anything. Force the subject-verb-implication shape.
Running the Step 1 elicitation ladder as a batch of 3 questionsInterrogation, not conversation. One question at a time; stop as soon as the sentence writes itself.
Stalling forever when the user can't articulate the Big IdeaPropose one yourself from Step 0 + the data, mark it **Proposal**:, let them react. Specific proposals unlock faster than open prompts.
Skipping Step 4 because "the chart is obvious"If the chart is obvious, the style stance is a 10-second confirmation, not skipped work. Ask.
Defaulting to INNOVATIVE because it's more visually interesting to youTraditional charts win most decisions. Innovation is earned by audience + stakes, not by aesthetics.
Picking INNOVATIVE when the reader has 5 secondsInnovative charts need study time. If the audience is glance-time, an innovative chart fails the Big Idea, no matter how elegant.
Writing the Brief AFTER renderingThe Brief is the constraint on the render, not a post-hoc justification.

Worked example (AIRS fig07 ultimate)

  • Step 0 sources (context found before asking the user anything):
    • AIRS/paper/manuscript.html § Results — paragraph before the figure reads "cluster centroids on BI diverge sharply, but the within-cluster spread tells the more actionable story" → near-verbatim Big Idea seed
    • Existing R plot caption: "BI by cluster with SD bars" → topic-shaped, needed upgrading to a claim
    • AIRS/SUMMARY.md audience note: technical readers, decision-critical for training program design → fixed Audience read without a separate question
  • Big Idea: "The three AI-readiness clusters differ not just in average Behavioral Intention but in how tightly their members cluster around the mean — Enthusiasts are uniformly high, Skeptics span the full Likert range." (drafted from Step 0 seed, confirmed by user in one hop — no elicitation ladder needed)
  • Story arc: Ranking-with-context (comparison + distribution)
  • Audience: Study (2min+) / Domain-fluent / Decision-critical
  • Style stance: INNOVATIVE — the Big Idea has two arcs, so a traditional single-arc chart (bar of means) loses half the argument. Study-time + domain-fluent audience can afford the extra read cost.
  • Suggested chartType: Lollipop Chart (centroid + stem) and Strip Plot (respondent-level jitter), as a separately verified composite rather than one registered chartType
  • Alternates considered: (a) traditional bar with error bars — chosen against because it hides the floor/ceiling clamping that makes the Skeptics story vivid; (b) boxplot + strip — chosen against because box quartile lines are redundant with the strip density and add visual noise.
  • Anti-patterns to avoid: over-layering (kept to strip + lollipop + centroid, no boxplot); starting y at 0 on a Likert scale (started at 1); putting metadata inside the plot area (n= labels moved to the axis).

Related skills

  • big-idea (Alex ACT Core) — the generalized Big Idea distillation for any summary-shaped output. chart-big-idea is the chart-specific specialization.
  • chart-vocabulary — 7-goal catalog + CSAR override table. Consumed by Step 5 (Chart Brief) to pick a chart type once the Big Idea is locked; also consumed by the selection tree in chart-vocabulary Module 5 which delegates back here for Step 1.
  • flint-chart — §0.2 chart-family-before-type + ChartAssemblyInput authoring. Consumes the Chart Brief.
  • render-verify — post-render check + Prose-coupling check for the shipped figure.
  • print-svg-style-guide — how figures LOOK once framing (this skill) is locked. Canvas + typography + palette + composition idioms.
  • figure-generator — deterministic engineering discipline for shipping figures backed by real datasets.

Would Revise If

Revise this skill if any of the following fires:

  • Cole Nussbaumer Knaflic publishes a materially revised Big Idea framing that supersedes the three-part rule used here.
  • Users invoke this skill to frame non-chart artifacts often enough that Steps 2/4/5 are routinely skipped → the general half (Steps 0/1/3) has outgrown the chart-specific half, and it should be split into its own skill rather than scope-noted.

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.