wakapi
Wakapi coding stats (summaries, projects, today status, totals) via a small Python CLI. Requires WAKAPI_URL. WAKAPI_API_KEY is HTTP Basic (Authorization Basic base64(key)) for all calls except health, which uses native GET /api/health (no key). Use for Wakapi / self-hosted coding time and project/language breakdowns.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/chensoul/wakapi-skillWakapi API query
When to use
The user wants read-only stats from a Wakapi instance: time ranges, projects/languages, today’s status line, all-time total, or project list.
Documentation map
| Document | Use it for |
|---|---|
| This file | Env vars, subcommand overview, copy-paste CLI examples |
| references/wakapi-api.md | Full URLs (/api/health vs compat prefix), stats path vs summaries query range, preset table, optional summaries filters, curl, timeouts |
Requirements
| Category | Detail |
|---|---|
| Runtime | Python 3, stdlib only. Entry: scripts/wakapi_query.py. Run from the skill root (directory that contains SKILL.md). |
| Environment | WAKAPI_URL — instance origin, no trailing / (required). WAKAPI_API_KEY — required for every subcommand except health. |
| Network | Outbound HTTPS (or http:// if your instance uses it) to WAKAPI_URL. |
| Authentication | HTTP Basic: Authorization: Basic + base64(API key only). |
| Registry | metadata.openclaw: requires.env = ["WAKAPI_URL", "WAKAPI_API_KEY"], primaryEnv = WAKAPI_API_KEY. |
No other environment variables are read by the CLI.
Subcommands at a glance
| Subcommand | API key? | What it calls |
|---|---|---|
health | No | Native GET {WAKAPI_URL}/api/health (JSON if Content-Type: application/json) |
projects | Yes | Compat …/compat/wakatime/v1/users/current/projects |
status-bar | Yes | {WAKAPI_URL}/api/v1/users/current/statusbar/today |
all-time-since | Yes | Compat …/all_time_since_today |
stats <range> | Yes | Compat …/stats/{range} — {range} is a URL path segment |
summaries | Yes | Compat …/summaries — --range or --start + --end; optional --project, --branches, --timezone, --timeout (API), --writes-only |
stats vs summaries: different meanings of “range”; see references/wakapi-api.md.
Prerequisites
- Set
WAKAPI_URL. SetWAKAPI_API_KEYfor all commands excepthealth. - Do not paste secrets into chat. If the key is missing, ask the user to configure the environment.
Usage
Run from the skill root. --help / summaries --help list all flags.
# WAKAPI_URL required always; WAKAPI_API_KEY required for all subcommands except health.
export WAKAPI_URL="https://your-wakapi.example"
export WAKAPI_API_KEY="…"
# --- Help ---
python3 scripts/wakapi_query.py --help
python3 scripts/wakapi_query.py summaries --help
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-chensoul-wakapi-skill": {
"enabled": true,
"auto_update": true
}
}
}