com um clique
vibe-clock-setup
// Set up vibe-clock to track AI coding agent usage (Claude Code, Codex, OpenCode) and display SVG stats on a GitHub profile README.
// Set up vibe-clock to track AI coding agent usage (Claude Code, Codex, OpenCode) and display SVG stats on a GitHub profile README.
| name | vibe-clock-setup |
| description | Set up vibe-clock to track AI coding agent usage (Claude Code, Codex, OpenCode) and display SVG stats on a GitHub profile README. |
| license | MIT |
| compatibility | ["claude-code","codex-cli","opencode"] |
| metadata | {"version":"0.1.0","author":"dexhunter","repository":"https://github.com/dexhunter/vibe-clock"} |
| allowed-tools | ["Bash","Read","Write","Edit","Glob","Grep","WebFetch"] |
You are setting up vibe-clock, a CLI tool that tracks AI coding agent usage across Claude Code, Codex, and OpenCode, then displays SVG visualizations on a GitHub profile README.
Local machine GitHub
───────────── ──────
~/.claude/ Gist (vibe-clock-data.json)
~/.codex/ ──push──▶ │
~/.local/share/opencode/ Actions (daily cron)
│
fetch gist → generate SVGs → commit to profile repo
Two-stage pipeline:
vibe-clock push collects sessions from agent data dirs, aggregates, sanitizes (strips all PII/paths/project names), and pushes safe JSON to a GitHub Gist.<username>/<username> profile repo fetches the gist, generates SVGs via vibe-clock render --from-json, and commits them.gist scope (fine-grained tokens do NOT support gists)~/.claude/), Codex (~/.codex/), or OpenCode (~/.local/share/opencode/)<username>/<username>) with a README.mdpip install git+https://github.com/dexhunter/vibe-clock.git
Or with uv:
uv tool install git+https://github.com/dexhunter/vibe-clock.git
Verify the installation:
vibe-clock --version
vibe-clock init
This will:
gist scope)~/.config/vibe-clock/config.tomlIf the user already has a GITHUB_TOKEN environment variable, note that the TOML config token takes precedence when set. If the env var token lacks gist scope, make sure to enter the correct token during init.
vibe-clock summary
This shows a terminal table with session counts, total time, token usage, favorite model, and peak hour. If no data appears, check that agent data directories exist and contain session files.
First do a dry run to preview what will be pushed:
vibe-clock push --dry-run
Verify the output contains ONLY aggregated numbers — no file paths, project names, or personal information. Then push:
vibe-clock push
This creates a public gist named vibe-clock-data.json. Note the gist ID printed — it is automatically saved to the config file.
To retrieve the gist ID later:
grep gist_id ~/.config/vibe-clock/config.toml
The user's profile repo is <username>/<username> (e.g., dexhunter/dexhunter).
Go to the profile repo → Settings → Secrets and variables → Actions → New repository secret:
VIBE_CLOCK_GIST_IDCreate .github/workflows/vibe-clock.yml in the profile repo:
name: Update Vibe Clock Stats
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dexhunter/vibe-clock@main
with:
gist_id: ${{ secrets.VIBE_CLOCK_GIST_ID }}
Add this section to the profile repo's README.md:
<h2 align="center"> Vibe Clock </h2>
<p align="center">
<img src="images/vibe-clock-card.svg" alt="Vibe Clock Stats" />
</p>
<p align="center">
<img src="images/vibe-clock-donut.svg" alt="Model Usage" />
<img src="images/vibe-clock-token-bars.svg" alt="Token Usage by Model" />
</p>
<p align="center">
<img src="images/vibe-clock-hourly.svg" alt="Activity by Hour" />
<img src="images/vibe-clock-weekly.svg" alt="Activity by Day of Week" />
</p>
Available chart types: card, heatmap, donut, bars, token_bars, hourly, weekly.
Go to the profile repo → Actions tab → "Update Vibe Clock Stats" → Run workflow.
Or if the user has a gh CLI token with workflow permissions:
gh workflow run vibe-clock.yml --repo <username>/<username>
vibe-clock push locally whenever you want to update stats (e.g., daily via cron or manually)Config file: ~/.config/vibe-clock/config.toml
[general]
default_days = 30
theme = "dark"
[paths]
claude_code = "~/.claude"
codex = "~/.codex"
opencode = "~/.local/share/opencode"
[github]
token = ""
gist_id = ""
[agents]
enabled = ["claude_code", "codex", "opencode"]
[privacy]
exclude_projects = []
exclude_date_ranges = []
anonymize_projects = true
Environment variable overrides (used when TOML value is empty): GITHUB_TOKEN, VIBE_CLOCK_GIST_ID, VIBE_CLOCK_DAYS.
Only aggregated numbers leave the machine. Never pushed: file paths, project names, message content, code, git info, or PII. Use --dry-run to verify before any push.
vibe-clock: command not found: Ensure pip/uv installed it globally. Try uv tool install --force git+https://github.com/dexhunter/vibe-clock.git.gist scope. Must be a Classic PAT, not fine-grained.ALL_PROXY), vibe-clock already uses trust_env=False to bypass it.~/.claude/projects/, ~/.codex/sessions/, ~/.local/share/opencode/storage/).