agentsclimarketplace

Obsidian charts

Skill risadams/skills/obsidian-charts

An opinionated library of reusable agent skills. Contains practical skills for writing, planning, triage, architecture, and workspace workflows

Install
npx -y skills add risadams/skills --skill obsidian-charts

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build interactive charts in Obsidian notes using the Charts plugin (phibr0/obsidian-charts). Renders Chart.js bar/line/pie/doughnut/radar/polarArea via `chart` codeblocks, can pull data straight from a markdown table by block ID (cross-file supported), and can render from a Dataview query via `window.renderChart`. Use when the user wants to chart, plot, graph, or visualize data sitting in their Obsidian notes — including tables, frontmatter values, Dataview/Dataviewjs results, or hand-written series — or mentions "obsidian charts", "chart codeblock", "renderChart", or "chart from table".

SKILL.md

5.7 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Obsidian Charts Skill

Assumes the user already has the Charts community plugin (phibr0/obsidian-charts) installed and enabled.

Decide the data source first

Before writing any codeblock, pick the source — it changes the syntax:

SourceUse whenPattern
Inline literalSmall, hand-typed serieschart codeblock with labels: + series:
Markdown table in same noteData already lives in a tablechart codeblock with id: <blockId>
Markdown table in another noteShared data tablechart codeblock with id: + file:
Dataview / Dataviewjs queryData is computed/aggregateddataviewjs codeblock calling window.renderChart(...)
Frontmatter valuesComparing notes by propertyDataviewjs + renderChart (Dataview required)

If the user is unsure, look at the note. A table → use table linking. A query → use renderChart. Loose numbers in prose → inline literal.

Quick start — inline data

```chart
type: bar
labels: [Mon, Tue, Wed, Thu, Fri]
series:
  - title: Hours focused
    data: [4, 3, 5, 2, 6]
beginAtZero: true
width: 80%
```

Quick start — from a table in the same note

| | Q1 | Q2 | Q3 | Q4 |
| - | - | - | - | - |
| Revenue | 10 | 14 | 12 | 18 |
| Cost    | 8  | 9  | 11 | 13 |
^revenue

```chart
type: bar
id: revenue
layout: rows
beginAtZero: true
```

layout: rows reads each table row as a series; layout: columns reads each column as a series. Add select: [Revenue] to restrict which rows/columns are charted. Add file: <OtherNote> to point at a ^blockId in another note.

Quick start — from a Dataview query

Requires the Dataview plugin with JS enabled.

```dataviewjs
const pages = dv.pages('"Journal"').where(p => p.mood);
window.renderChart({
  type: 'line',
  data: {
    labels: pages.map(p => p.file.name).array(),
    datasets: [{
      label: 'Mood',
      data: pages.map(p => p.mood).array(),
      tension: 0.3,
    }]
  }
}, this.container);
```

Core parameters (chart codeblock)

KeyValuesNotes
typebar line pie doughnut radar polarAreaRequired
labels[a, b, c]Required for non-table source
serieslist of { title, data }Required for non-table source
idblock IDUse instead of labels/series to pull from a table
filenote basenamePairs with id for cross-note tables
layoutrows | columnsTable-source only
select[name1, name2]Filter rows/cols from a table
beginAtZeroboolForce y-axis to start at 0
stackedboolStack series (bar/line)
tension0–1Line curve smoothing
fillboolFill area under line
width80% etc.Chart width
legendboolShow legend
legendPositiontop bottom left right
bestFitboolDraw trend line (line/scatter)
bestFitTitlestringLabel for trend line
bestFitNumbernumberSeries index for trend
labelColorsboolColor labels by series
timeday month year etc.Treat labels as dates
indexAxisx | yy makes horizontal bar chart
xMin xMax yMin yMaxnumber/dateAxis bounds
xTitle yTitlestringAxis labels

See REFERENCE.md for the full parameter list, renderChart API, color/styling, multi-series patterns, and troubleshooting.

Workflow when helping the user

  1. Locate the data. Read the note, identify whether the data is a table (does it have a ^blockId?), a query result, or loose values.
  2. Pick the chart type. Comparing categories → bar. Trend over time → line. Parts of a whole → pie / doughnut. Multi-dimensional → radar.
  3. If using a table, confirm there is a ^blockId line beneath it. If not, add one — without it, the chart cannot reference the table.
  4. Draft the codeblock inline in the note (don't make a new file unless the user asks).
  5. Pick layout carefully — rows vs columns is the most common "why is my chart wrong" issue. If the chart looks transposed, flip it.
  6. Tell the user to open the note in Reading view or Live Preview to render the chart; Source view shows the raw codeblock.

Common gotchas

  • No render in Source mode — switch to Live Preview or Reading view.
  • Table reference fails — the ^blockId must be on its own line immediately after the table, and id: in the codeblock must match exactly (no ^).
  • layout mismatch — series and labels look swapped; flip rowscolumns.
  • Date axis flat / unsorted — set time: day (or month/year) so the plugin treats labels as dates.
  • renderChart undefined — the Charts plugin isn't enabled, or the codeblock isn't dataviewjs (it must be — dataview won't work for JS).
  • Series with mismatched lengths — every data array must match labels.length (pad with null for missing points).

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.