DEV Community

Cover image for I Built a GitHub-Style Contribution Calendar That Shows When My AI Works Without Me
Yurukusa
Yurukusa

Posted on

I Built a GitHub-Style Contribution Calendar That Shows When My AI Works Without Me

GitHub's contribution calendar shows when you coded. But what if half those green squares weren't actually you?

I built cc-calendar — a terminal tool that renders a GitHub-style activity graph for your Claude Code sessions. Two rows: YOU (cyan) and AI (yellow). Ghost Days — when AI ran autonomously while you had zero interactive sessions — glow bright.

The output

$ npx cc-calendar

  cc-calendar  — AI草カレンダー
  ══════════════════════════════════════════════════

       Jan         Feb         Mar
Sun  ░░░░░▒░░░  Sun  ░▒▒▒▓█▓█▒
Mon  ░░░░░░░░░  Mon  ░▒▒▒▓██▓░
Tue  ░░░░░▒░░░  Tue  ░▒▒▒▒▓▓▓░
Wed  ░░░░▒░░░░  Wed  ░▒▓▒▒▓▓▓░
Thu  ░░░░░░██░  Thu  ░▓▒▒▒▒▓▒░
Fri  ░░░░░░█░░  Fri  ░▒░█▒▒▓▒░
Sat  ░░░░▒░░█░  Sat  ▒░░▒▓▒▓█░

  █ You  █ AI  █ Ghost Day  ░▒▓█ = none→light→heavy

  ▸ Period:      2026-01-10 → 2026-03-01
  ▸ Active Days: 48 total
  ├─ Both active:    8 days
  ├─ You only:       0 days
  └─ Ghost Days:     40 days (AI worked while you rested)

  Your hours:  46.5h
  AI hours:    83.3h

  👻 40 Ghost Days — AI was 83% of your active days
Enter fullscreen mode Exit fullscreen mode

Those bright yellow cells on the right? Ghost Days. The AI was running autonomous subagent pipelines — publishing npm packages, writing articles, updating GitHub Pages — while I was offline.

Why I built this

I already had cc-agent-load which shows the YOU/AI split as aggregate numbers. But a single ratio doesn't tell the story. You can't see when the AI was working without you, or whether it was a sustained pattern.

The contribution calendar format solves this immediately. Engineers are trained to read GitHub contribution graphs at a glance. Same interface, new dimension.

How it works

cc-calendar reads from cc-agent-load --json, which outputs session data by date:

{
  "byDate": {
    "2026-02-09": { "main": 0, "sub": 6.0 },
    "2026-02-10": { "main": 1.5, "sub": 2.3 }
  }
}
Enter fullscreen mode Exit fullscreen mode

For each day:

  • main = hours in interactive sessions (you + AI responding to you)
  • sub = hours in autonomous subagent sessions (AI running without you)

Ghost Day = main === 0 && sub > 0.

The calendar renders 26 weeks with GitHub-style block characters:

  • light (< 1h)
  • medium (1-4h)
  • heavy (4h+)
  • intense (4h+)

Zero dependencies

No npm packages. Just Node.js 18+. Reads ~/.claude/projects/ transcript files directly.

npx cc-calendar
Enter fullscreen mode Exit fullscreen mode

What 40 Ghost Days means

Out of 48 active days in my log, 40 were AI-only. That's 83%.

The pattern is: I have an interactive session, set something in motion, then go to sleep. The AI keeps running — finishing tasks, publishing packages, updating docs. Next morning I check the results.

It's not a problem to fix. It's the intended design. But seeing it visualized makes it concrete.

The 8 "both active" days were when I was in the middle of something large and the AI was running parallel tasks.

The 0 "you only" days means I never worked without AI support. Every interactive session had some autonomous component.

Related tools

This tool is part of the cc-toolkit collection:

All 106 free tools: cc-toolkit


Is your Claude Code setup actually safe? Run npx cc-health-check — a free 20-point diagnostic. Score below 80? The Claude Code Ops Kit fixes everything in one command.

GitHub: cc-calendar

What does your calendar look like?

Top comments (0)