{"id":45040986,"url":"https://github.com/dexhunter/vibe-clock","last_synced_at":"2026-02-24T17:01:12.828Z","repository":{"id":339218315,"uuid":"1160977164","full_name":"dexhunter/vibe-clock","owner":"dexhunter","description":"Track AI coding agent usage across Claude Code, Codex, and OpenCode — SVG charts for your GitHub profile","archived":false,"fork":false,"pushed_at":"2026-02-22T13:31:57.000Z","size":189,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T18:59:07.093Z","etag":null,"topics":["ai-agents","claude-code","cli","codex","developer-tools","github-actions","github-profile","opencode","svg"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dexhunter.png","metadata":{"files":{"readme":"README.es.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-18T15:40:33.000Z","updated_at":"2026-02-22T13:32:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dexhunter/vibe-clock","commit_stats":null,"previous_names":["dexhunter/vibe-clock"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/dexhunter/vibe-clock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dexhunter%2Fvibe-clock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dexhunter%2Fvibe-clock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dexhunter%2Fvibe-clock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dexhunter%2Fvibe-clock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dexhunter","download_url":"https://codeload.github.com/dexhunter/vibe-clock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dexhunter%2Fvibe-clock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29747979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","cli","codex","developer-tools","github-actions","github-profile","opencode","svg"],"created_at":"2026-02-19T07:26:08.779Z","updated_at":"2026-02-23T16:00:54.677Z","avatar_url":"https://github.com/dexhunter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vibe-clock\n\n[English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | Español\n\n**WakaTime para agentes de programación con IA.** Rastrea el uso de Claude Code, Codex y OpenCode — y muéstralo en tu perfil de GitHub.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)\n[![GitHub stars](https://img.shields.io/github/stars/dexhunter/vibe-clock?style=social)](https://github.com/dexhunter/vibe-clock)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dexhunter/dexhunter/master/images/vibe-clock-card.svg\" alt=\"Estadísticas de Vibe Clock\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dexhunter/dexhunter/master/images/vibe-clock-donut.svg\" alt=\"Uso de modelos\" width=\"400\" /\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dexhunter/dexhunter/master/images/vibe-clock-token-bars.svg\" alt=\"Uso de tokens por modelo\" width=\"400\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dexhunter/dexhunter/master/images/vibe-clock-hourly.svg\" alt=\"Actividad por hora\" width=\"400\" /\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dexhunter/dexhunter/master/images/vibe-clock-weekly.svg\" alt=\"Actividad por día de la semana\" width=\"400\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Inicio rápido\n\n```bash\n# macOS (Homebrew)\nbrew install dexhunter/tap/vibe-clock\n\n# o vía pip\npip install vibe-clock\n```\n\n```bash\nvibe-clock init          # detecta agentes automáticamente, configura todo\nvibe-clock summary       # ve tus estadísticas en la terminal\n```\n\n## Privacidad y seguridad\n\n**Tu código nunca sale de tu máquina.** vibe-clock solo lee metadatos de sesión (marcas de tiempo, conteos de tokens, nombres de modelos) de los logs JSONL locales. Antes de que se envíe cualquier dato:\n\n1. **El sanitizador elimina toda información personal** — rutas de archivos, nombres de proyectos, nombres de usuario y código son removidos ([`sanitizer.py`](vibe_clock/sanitizer.py))\n2. **Los proyectos se anonimizan** — los nombres reales se convierten en \"Project A\", \"Project B\"\n3. **`--dry-run` te permite inspeccionar** exactamente qué se enviará antes de hacerlo\n\n**Lo que se envía** (a tu propio gist público):\n- Conteos de sesiones, conteos de mensajes, duraciones\n- Totales de uso de tokens por modelo\n- Nombres de modelos y agentes\n- Agregados de actividad diaria\n\n**Lo que NUNCA se envía**: rutas de archivos, nombres de proyectos, contenido de mensajes, fragmentos de código, información de git o cualquier información personal.\n\n## Gráficos configurables\n\nGenera solo los gráficos que necesites con `--type`:\n\n```bash\nvibe-clock render --type card,donut           # solo estos dos\nvibe-clock render --type all                  # los 7 gráficos (por defecto)\n```\n\n| Gráfico | Archivo | Descripción |\n|---------|---------|-------------|\n| `card` | `vibe-clock-card.svg` | Tarjeta de resumen de estadísticas |\n| `heatmap` | `vibe-clock-heatmap.svg` | Mapa de calor de actividad diaria |\n| `donut` | `vibe-clock-donut.svg` | Distribución de uso de modelos |\n| `bars` | `vibe-clock-bars.svg` | Barras de sesiones por proyecto |\n| `token_bars` | `vibe-clock-token-bars.svg` | Uso de tokens por modelo |\n| `hourly` | `vibe-clock-hourly.svg` | Actividad por hora del día |\n| `weekly` | `vibe-clock-weekly.svg` | Actividad por día de la semana |\n\n## Configuración de GitHub Actions\n\nAgrega esto a tu repositorio de perfil `\u003cusername\u003e/\u003cusername\u003e` para actualizar los SVGs automáticamente cada día.\n\n### 1. Envía tus estadísticas\n\n```bash\nvibe-clock push          # crea un gist público con datos sanitizados\n# Anota el ID del gist que se muestra\n```\n\n### 2. Agrega el secreto\n\nEn tu repositorio de perfil: **Settings → Secrets → Actions** → agrega:\n- `VIBE_CLOCK_GIST_ID` — el ID del gist del paso 1\n\n### 3. Crea el workflow\n\n`.github/workflows/vibe-clock.yml`:\n\n```yaml\nname: Update Vibe Clock Stats\n\non:\n  workflow_dispatch:\n\njobs:\n  update:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - uses: dexhunter/vibe-clock@v1.4.0\n        with:\n          gist_id: ${{ secrets.VIBE_CLOCK_GIST_ID }}\n```\n\n### 4. Agrega los SVGs a tu README\n\n```html\n\u003cimg src=\"images/vibe-clock-card.svg\" alt=\"Vibe Clock Stats\" /\u003e\n\u003cimg src=\"images/vibe-clock-heatmap.svg\" alt=\"Activity Heatmap\" /\u003e\n\u003cimg src=\"images/vibe-clock-donut.svg\" alt=\"Model Usage\" /\u003e\n\u003cimg src=\"images/vibe-clock-bars.svg\" alt=\"Projects\" /\u003e\n```\n\n### 5. Ejecútalo\n\nVe a la pestaña **Actions** → \"Update Vibe Clock Stats\" → **Run workflow**\n\n### Parámetros del Action\n\n| Parámetro | Predeterminado | Descripción |\n|-----------|---------------|-------------|\n| `gist_id` | *requerido* | ID del Gist que contiene `vibe-clock-data.json` |\n| `theme` | `dark` | `dark` o `light` |\n| `output_dir` | `./images` | Directorio de salida para archivos SVG |\n| `chart_types` | `all` | Separados por coma: `card,heatmap,donut,bars,token_bars,hourly,weekly` o `all` |\n| `commit` | `true` | Auto-commit de los SVGs generados |\n| `commit_message` | `chore: update vibe-clock stats` | Mensaje del commit |\n\n### Cómo funciona\n\n```\nTú (local)                     GitHub\n─────────                      ──────\nvibe-clock push  ──▶  Gist (JSON sanitizado)\n                     │\n                     └──▶  workflow_dispatch\n                              │\n                       obtener JSON del gist\n                       generar SVGs\n                       commit al repositorio de perfil\n```\n\n## Agentes soportados\n\n| Agente | Ubicación de logs | Estado |\n|--------|-------------------|--------|\n| **Claude Code** | `~/.claude/` | Soportado |\n| **Codex** | `~/.codex/` | Soportado |\n| **Gemini CLI** | `~/.gemini/` | Soportado |\n| **OpenCode** | `~/.local/share/opencode/` | Soportado |\n\n## Comandos\n\n| Comando | Descripción |\n|---------|-------------|\n| `vibe-clock init` | Configuración interactiva — detecta agentes, solicita token de GitHub |\n| `vibe-clock summary` | Resumen enriquecido de estadísticas de uso en la terminal |\n| `vibe-clock status` | Muestra la configuración actual y el estado de conexión |\n| `vibe-clock render` | Genera visualizaciones SVG localmente |\n| `vibe-clock export` | Exporta estadísticas sin procesar como JSON |\n| `vibe-clock push` | Envía estadísticas sanitizadas a un gist de GitHub y dispara el renderizado del repositorio de perfil |\n| `vibe-clock push --dry-run` | Previsualiza lo que se enviaría |\n| `vibe-clock schedule` | Programar push periódico automático (launchd / systemd / cron) |\n| `vibe-clock unschedule` | Eliminar la tarea de push programada |\n\n## Configuración\n\nArchivo de configuración: `~/.config/vibe-clock/config.toml`\n\nVariables de entorno:\n- `GITHUB_TOKEN` — PAT de GitHub con permisos de `gist`\n- `VIBE_CLOCK_GIST_ID` — ID del Gist para enviar/recibir\n- `VIBE_CLOCK_DAYS` — Número de días a agregar\n\n## Licencia\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdexhunter%2Fvibe-clock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdexhunter%2Fvibe-clock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdexhunter%2Fvibe-clock/lists"}