What you get

  • A dependency-free React heatmap component with typed props
  • The same calendar as one HTML file with a JSON data block
  • A script that aggregates git log, CSV or JSON into daily counts
  • Totals, streaks, keyboard navigation and a live readout
  • Optional header or share-card art from PopNow, quoted first

Good for

  • Commit, writing or study history on a profile page
  • Habit, workout and streak trackers
  • Daily sales, sign-ups or ticket volume in a report

Not for

  • Comparing several series on one chart
  • Hour-of-day patterns or very short histories
  • Looking up exact values, where a table reads better

How to use it

In Claude or ChatGPT

Use the PopNow skill "Calendar Heatmap" (activity-heatmap-calendar) for this: Show my commits from this repo over the past year on my portfolio's About page.

In a coding agent

/popnow-activity-heatmap-calendar Show my commits from this repo over the past year on my portfolio's About page.

Then try

Use fixed levels: 1, 3 and 6 commits.

Make a share card background for this section and tell me the credits first.

What to have ready

  • Your records or the command that exports them
  • What one unit means, such as a commit or an order
  • The date range and whether Monday starts the week

Similar skills

View all →

Questions

Where does the data come from?

Anything with a date per record. The bundled script reads git log output, CSV files with a date column, JSON arrays or plain lists of timestamps, and writes one count per day.

Does it need a charting library?

No. The React version only needs React and the HTML version needs nothing. Both draw the grid with plain elements and work in light and dark mode.

How are the colour levels decided?

By default from the quartiles of your non-empty days, so a quiet year still uses the full ramp. You can set fixed thresholds when the numbers carry a fixed meaning.

Why not let the image model draw my stats?

Image models can get numbers wrong. The skill generates a text-free background with PopNow and places your real totals and streaks on top in HTML.