Skills kimai-time-tracking
Complete Kimai time-tracking API integration. Manage timesheets, customers, projects, activities, teams, invoices and exports via REST API. Supports time tracking workflows, reporting, and administrative operations. Keywords - kimai, zeiterfassung, timesheet, tracking, project, customer, activity, invoice, export, timer, stunden
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/0x7466/kimai-time-tracking" ~/.claude/skills/clawdbot-skills-kimai-time-tracking && rm -rf "$T"
skills/0x7466/kimai-time-tracking/SKILL.mdKimai Time Tracking Skill
Complete API integration for Kimai time-tracking software. Enables full control over timesheets, projects, customers, activities, teams, invoices, and system configuration.
When to use
Activate this skill when the user requests:
- Start/stop/restart time tracking (timers)
- List, filter, or export timesheets
- Manage customers, projects, or activities
- Create invoices or export data
- Administrative tasks (users, teams, rates)
- Query system status (version, plugins, config)
Activation triggers:
- Keywords: "kimai", "zeiterfassung", "timesheet", "timer", "stunden", "erfasse Zeit", "starte Tracking", "Projekt anlegen", "Rechnung erstellen"
- "Start tracking for project X"
- "Show my timesheets from last week"
- "Create new customer in Kimai"
- "Export timesheets to CSV"
- "List all active timers"
- "Stop current time tracking"
Do NOT activate for:
- General time questions ("What time is it?")
- Other time-tracking tools (Toggl, Clockify, etc.)
- Calendar/scheduling without Kimai context
Environment Setup
Required Environment Variables:
- Full URL to Kimai instance (e.g.,KIMAI_BASE_URL
)https://kimai.example.com
- Bearer token for authenticationKIMAI_API_TOKEN
Optional:
- Path for exports/temp files (defaults toKIMAI_WORKSPACE
)~/.openclaw/workspace/kimai
API Permissions required depend on operation:
,view_own_timesheet
,create_own_timesheet
,edit_own_timesheetdelete_own_timesheet
(for viewing other users' entries)view_other_timesheet
,view_customer
,edit_customerdelete_customer
,view_project
,edit_projectdelete_project
,view_activity
,edit_activitydelete_activity
,view_team
,edit_team
,create_teamdelete_team
(for invoice operations)view_invoice
(for user management)view_user
Compatibility: Requires Kimai 2.x with REST API enabled. Internet access required. Linux/macOS supported.
Workflow
1. Quick Time Tracking
# List recent activities (to find project/activity IDs) ./scripts/kimai_cli.py timesheets recent # Start tracking ./scripts/kimai_cli.py timesheets start --project 1 --activity 5 --description "Implementing API" # Check active timers ./scripts/kimai_cli.py timesheets active # Stop tracking ./scripts/kimai_cli.py timesheets stop --id 123
2. Data Management Workflow
# Create customer → Project → Activity hierarchy ./scripts/kimai_cli.py customers create --name "Acme Corp" --country DE --currency EUR --timezone Europe/Berlin ./scripts/kimai_cli.py projects create --name "Website Redesign" --customer 1 ./scripts/kimai_cli.py activities create --name "Development" --project 1 # List with filters ./scripts/kimai_cli.py timesheets list --customer 1 --begin "2024-01-01T00:00:00" --exported 0
3. Export/Invoice Workflow
# Mark timesheets as exported (locks them) ./scripts/kimai_cli.py timesheets export --id 123 # List invoices ./scripts/kimai_cli.py invoices list --status pending --begin 2024-01-01T00:00:00
CLI Tool Reference
Use
scripts/kimai_cli.py for all operations. Structure follows API endpoints:
Timesheets (timesheets
)
timesheets
- List entries (supports pagination, filters: user, customer, project, activity, tags, date range, exported status)list
- Fetch single entryget <id>
- Create manual entry or start timer (omit --end for active tracking)create
- Patch existing entryupdate <id>
- Requires confirmation (destructive)delete <id>
- Stop active timerstop <id>
- Restart finished entry (creates new)restart <id>
- Copy entry (resets export status)duplicate <id>
- List currently running timersactive
- Recent unique working sets (last activity per project/activity combination)recent
- Toggle export/lock statusexport <id>
Customers (customers
)
customers
- List customers (filter: visible, term)list
- Fetch customer detailsget <id>
- Create new customercreate
- Update customerupdate <id>
- Requires confirmation (cascades to projects/activities/timesheets)delete <id>
- Update custom fieldsmeta <id>
- Manage customer-specific ratesrates <id>
Projects (projects
)
projects
- List projects (filter: customer, visible, date range)list
- Fetch projectget <id>
- Create project (requires customer ID)create
- Update projectupdate <id>
- Requires confirmation (cascades to activities/timesheets)delete <id>
- Manage project ratesrates <id>
Activities (activities
)
activities
- List activities (filter: project, visible, global only)list
- Fetch activityget <id>
- Create activity (can be global or project-specific)create
- Update activityupdate <id>
- Requires confirmation (cascades to timesheets)delete <id>
- Manage activity ratesrates <id>
Teams (teams
)
teams
,list
,get
,create
,updatedelete
- Add team membermember-add <team-id> <user-id>
- Remove membermember-remove <team-id> <user-id>
- Grant customer accessgrant-customer <team-id> <customer-id>
- Grant project accessgrant-project <team-id> <project-id>
- Grant activity accessgrant-activity <team-id> <activity-id>
Users (users
)
users
- List users (requires view_user permission)list
- Current user infome
- User detailsget <id>
- Create user (admin)create
- Update userupdate <id>
Invoices (invoices
)
invoices
- List invoices (filter: date range, customer, status)list
- Invoice detailsget <id>
System (system
)
system
- Test connectivityping
- Kimai version infoversion
- Installed pluginsplugins
- Timesheet configurationconfig
- Color codescolors
Safety & Boundaries
⚠️ DESTRUCTIVE OPERATIONS
operations on customers, projects, activities, timesheets, teams, or tags require explicit user confirmation.delete- Deleting customers cascades to all linked projects, activities, and timesheets [1].
- Deleting projects cascades to activities and timesheets [1].
- The CLI will show a preview of affected data and require "yes" confirmation.
API Security:
- API token is passed via
header [1].Authorization: Bearer - Token is never logged or stored in CLI output.
- Use
flag for testing (simulates API calls without executing).--dry-run
Rate Limiting & Pagination:
- API returns paginated results (default 50 items) [1].
- CLI auto-handles pagination for
commands (fetches all pages or respectslist
).--limit - Use
and--page
for manual pagination control.--size
Data Privacy:
- Timesheet data may contain sensitive information.
- Export files are saved to workspace with restricted permissions (600).
- Redact personal data (emails, names) when sharing debug output.
Workspace Safety:
- All file exports (CSV, JSON) default to
orKIMAI_WORKSPACE
.~/.openclaw/workspace/kimai - Never write to system directories outside workspace without explicit confirmation.
Input/Output Specifications
Inputs:
- Entity IDs (integers)
- ISO 8601 datetime strings (YYYY-MM-DDTHH:mm:ss)
- JSON data for create/update operations (via --json file or CLI args)
- Filter parameters (customer, project, activity IDs, date ranges, visibility)
Outputs:
- JSON (default, pipe-friendly)
- Table format (
for human readability)--format table - CSV (
for exports)--format csv - Exit codes: 0 (success), 1 (API error), 2 (validation error), 3 (cancelled by user)
Success Criteria:
- HTTP 200/201 for successful operations
- Valid JSON response structure matching API schemas [1]
- For exports: File created in workspace with expected record count
Examples
Start tracking with description
./scripts/kimai_cli.py timesheets create \ --project 5 \ --activity 12 \ --description "Client meeting - requirements analysis" \ --tags "meeting,urgent"
List and export non-exported hours
# Find billable hours not yet exported ./scripts/kimai_cli.py timesheets list \ --exported 0 \ --billable 1 \ --begin "2024-01-01T00:00:00" \ --end "2024-01-31T23:59:59" \ --format csv > january_hours.csv
Update custom fields (meta)
./scripts/kimai_cli.py customers meta 42 \ --name "order_number" \ --value "PO-2024-001"
Create team and assign resources
./scripts/kimai_cli.py teams create --name "Development Team" --members '[{"user": 1, "teamlead": true}]' ./scripts/kimai_cli.py teams grant-project 1 5
Error Handling
Common HTTP codes:
- Success200
- Created201
- No content (successful delete)204
- Bad request (validation error, missing fields)400
- Unauthorized (invalid/expired token)401
- Forbidden (insufficient permissions)403
- Not found (invalid ID)404
- Conflict (overlapping timesheet if not allowed by config)409
CLI behavior:
- Validates required fields before API call (e.g., project+activity for timesheets [1])
- Pretty-prints validation errors from API
- Suggests fixes (e.g., "Did you mean to use 'PATCH' instead of DELETE? Try setting visible=false to hide instead of delete")
Validation
Validate this skill using the Openclaw skills validator:
skills-ref validate ./kimai-time-tracking
Test API connectivity:
export KIMAI_BASE_URL="https://your-kimai.example.com" export KIMAI_API_TOKEN="your-api-token" ./kimai-time-tracking/scripts/kimai_cli.py system ping
References
- Kimai REST API Docs: https://www.kimai.org/documentation/rest-api.html
- Pagination Guide: https://www.kimai.org/documentation/api-pagination.html
- API Spec:
(complete OpenAPI schema)references/api-reference.json