Clockit – Developer-Friendly Time Tracker for VS Code
Clockit helps developers log coding sessions automatically, add session comments, export tracked time to CSV, Jira, or Notion, and (optionally) back up sessions to your Clockit account for cloud stats — all within VS Code (tested on VS Code 1.80+).
https://github.com/user-attachments/assets/4a6f36cf-c224-47b1-bd08-fb2f39038b11
✨ Features
- Automatic time tracking when you start coding
- Idle detection & trimming for accurate duration
- Idle seconds recorded for visibility per session
- Pause / resume controls plus a focus timer with countdown in the status bar
- Per-file and per-language focus time captured automatically
- Line changes counted (added/deleted) for lightweight effort signals
- Session comments on stop (defaults to latest git commit subject if empty)
- Multi-sink export — CSV, Jira, Notion
- Guided credential prompts (stored securely)
- Edit or clear credentials anytime
- Sink selection each session
- CSV menu in the status bar for quick access (open current log, folder, or Clockit Cloud)
- Optional cloud backup via Clockit API token (keep local CSV too)
- Goals tracking: create/complete goals in the Goals side panel, import subtasks from Jira issues, and have completed goals auto-attach to sessions (then clear after CSV export)
About
Session Tracking
Automatically records time spent on projects.
• Start Session
Command: clockit: Start Time Tracking
→ Starts a timer linked to your current workspace.
• Pause / Resume
Command: clockit: Pause or clockit: Resume.
• Stop Session
Command: clockit: Stop
→ Prompts for a short comment (e.g. “Refactored API routes”). If you completed goals, Clockit fills “Complete goals set” automatically and includes the list in the CSV row.
What gets tracked:
• Start and end time (ISO)
• Duration (seconds)
• Workspace name
• Git repository path and branch
• Associated issue (from Jira or branch name)
• Comment
• Goals (if any were completed)
You’ll see the current timer and controls in the status bar (bottom-left).
Goals and Jira subtasks
- Open the Goals side panel to add, complete, or delete goals. Completion time is recorded.
- If Jira is connected, choose Import from Jira issue to search by key/summary and pull subtasks into goals automatically.
- When you stop a session and any goals are completed, Clockit skips the freeform comment and uses “Complete goals set,” attaching the goal titles and durations to the CSV and exports.
Exporting Worklogs
You can export completed sessions to external systems.
Jira Export
Automatically logs your work as a Jira worklog entry
- Configure Jira Credentials
- Run: clockit: Configure Jira
- Enter:
- jira.domain: e.g. yourteam.atlassian.net
- jira.email: your Atlassian account
- jira.apiToken: create from id.atlassian.com/manage/api-tokens
- Select Issue
- When exporting, a prompt appears: “Search issues by key or summary.”
- Type part of a key (TP-12) or summary (login bug) to find matching issues.
- Automatic Issue Detection
- If your branch or commit comment includes a key (TP-123), clockit detects it automatically.
- View Results
- Success → Jira → TP-123 in the output channel.
- Errors show helpful messages (e.g. auth expired, issue not visible)
Notion Export
Logs each session as a new row in a Notion database.
- Configure Notion
• Run: clockit: Configure Notion
• Enter:
• notion.apiToken: internal integration token from Notion.
• notion.database: select your target database.
- Database Requirements
• Must include a Title property (e.g. “Name”).
• Recommended columns:
• Name (Title) – required
• Duration (Number)
• Started (Date)
• Ended (Date)
• Comment (Rich Text)
• Branch / Issue (Text)
- Export
• clockit automatically creates a page under that database after each completed session.
CSV Exports
Every completed session is appended to a CSV file for local analysis or backup.
• CSV file location:
~/Documents/clockit/ (default)
or whatever you set in
clockit_logger.csv.outputDirectory.
• Each entry includes:
startedIso, endedIso, durationSeconds, idleSeconds, linesAdded, linesDeleted, perFileSeconds, perLanguageSeconds, authorName, authorEmail, machine, ideName, workspace, repoPath, branch, issueKey, comment, goals
You can open it in Excel, Numbers, or Google Sheets for timesheet analysis.
Cloud Backups (optional)
Keep your local CSV while also backing up sessions to your Clockit account:
- Sign in at https://clockit.octech.dev/dashboard and open Profile → API Tokens
- Create a token (copy it once)
- Configure VS Code settings:
clockit.cloud.enabled: true
clockit.cloud.apiUrl: your ingest endpoint (Firebase Function URL). This defaults to the bundled CLOCKIT_INGEST_URL if set; override only if you have a custom deploy.
clockit.cloud.apiToken: the token you generated (stored as a secret)
- Stop a session—CSV writes locally and also uploads for cloud stats.
If you run your own ingest (e.g., custom Firebase Function deploy), set CLOCKIT_INGEST_URL in the extension environment or override clockit.cloud.apiUrl manually.
Ingest rate limits
- Default per-token limits (tunable via env):
INGEST_PER_MINUTE_LIMIT (default 60) and INGEST_PER_DAY_LIMIT (default 5000).
- If limits are exceeded, the ingest returns HTTP 429 and the session will still be written locally to CSV.
🧩 Usage
Start tracking
Stop tracking
Pause / resume
- Run
Clockit: Pause Time Tracking and Clockit: Resume Time Tracking to temporarily halt accrual (idle and per-file/language are paused).
Set a focus timer
- Run
Clockit: Set Focus Timer and enter minutes. A countdown shows in the status bar; you’ll get a notification when it ends.
- Input can be
mm:ss for precise focus bursts.
Choose export sinks
- On stop, you’ll be asked where to export the session (CSV, Jira, Notion).
- Only configured sinks will be active.
CSV quick actions
Click the 📂 CSV icon next to the timer to:
- Change the CSV output folder
- View past logs
- Open logs in your editor
🔐 Credential Management
First-time setup
When a sink (like Jira) is selected, Clockit prompts you for:
- Domain (e.g.,
yourteam.atlassian.net)
- Email
- API Token
Values are stored securely using:
- VS Code Secret Storage for sensitive keys
- Workspace Settings for non-secret configuration
Edit or clear credentials
| Command |
Description |
Clockit: Edit Credentials |
Edit existing sink credentials. |
Clockit: Clear Credentials |
Remove credentials for a specific sink or all. |
🧮 Configuration Options
| Setting |
Type |
Default |
Description |
clockit.autoStartOnLaunch |
boolean |
true |
Start tracking automatically on launch. |
clockit.idleTimeoutMinutes |
number |
5 |
Idle time threshold. |
clockit.showNotifications |
boolean |
true |
Show start/stop/export messages. |
clockit.askSinksEachTime |
boolean |
true |
Always prompt for sinks each session. |
clockit.enabledSinks |
string[] |
["csv"] |
Default sinks when prompting is off. |
clockit.csv.outputDirectory |
string |
workspace root |
CSV export folder (defaults to current working dir if empty). |
clockit.csv.filename |
string |
time_log.csv |
CSV log file name. |
clockit.author.name |
string |
"" |
Author name used in exports (falls back to git user.name). |
clockit.author.email |
string |
"" |
Author email used in exports (falls back to git user.email). |
clockit.machineName |
string |
"" |
Machine identifier for exports (defaults to hostname). |
clockit.backup.intervalSeconds |
number |
60 |
Background backup interval; set to 0 to disable periodic writes (shutdown flushes still happen). |
🧭 Supported Export Sinks
| Sink |
Description |
Config Keys |
| CSV |
Writes session logs to a CSV file. |
clockit.csv.outputDirectory, clockit.csv.filename |
| Jira |
Adds worklogs to Jira issues. |
clockit.jira.domain, clockit.jira.email, clockit.jira.apiToken |
| Notion |
(optional) Inserts session data into a Notion database. |
clockit.notion.databaseId, clockit.notion.token |
Command summary
| Description |
Command |
| Begin a new session |
Clockit: Start Time |
| Stop and export |
Clockit: Stop Time |
| Pause tracking |
Clockit: Pause Time Tracking |
| Resume tracking |
Clockit: Resume Time Tracking |
| Set a focus timer |
Clockit: Set Focus Timer |
| Open Goals view |
Clockit: Open Goals |
| Add a goal |
Clockit: Add Goal |
| Toggle goal completion |
Clockit: Toggle Goal |
| Delete a goal |
Clockit: Delete Goal |
| Configure Jira |
Clockit: Configure Jira |
| Configure Notion |
Clockit: Configure Notion |
| Choose sinks (CSV always on) |
Clockit: Choose Sinks |
| Open CSV log |
Clockit: Open CSV Log |
| Choose CSV folder |
Clockit: Choose CSV Output Folder |
| Edit credentials |
Clockit: Edit Credentials |
| Clear credentials |
Clockit: Clear Credentials |
| Toggle status bar widget |
Clockit: Toggle Status Bar |
Automatic background
| Setting |
Meaning |
Recommended Value |
clockit_logger.backup.enabled |
Enables background backup |
✅ (true) |
clockit_logger.backup.intervalSeconds |
How often to save |
60 (0 disables periodic writes; shutdown flushes still run) |
clockit_logger.backup.directory |
Custom backup directory |
(same as CSV / CWD) |
clockit_logger.backup.filenamePrefix |
Filename prefix |
backup_ |
Troubleshooting
| Symptom |
Likely Cause |
Fix |
| Jira 400 / 401 |
Invalid token or domain |
Refresh API token and re-run “Configure Jira.” |
| Notion 400 Bad Request |
Missing title field or wrong property type |
Add a Title column and ensure property types match. |
| CSV not appearing |
backup.directory not set or disabled |
Re-enable backups in settings. |
| Timer not visible |
Status bar hidden |
Run clockit: Toggle Status Bar. |
Tips & Best Practices
- Add issue keys (e.g. TP-123) to your branch names — clockit auto-detects them.
- Keep backup enabled; it protects you from VS Code crashes.
- If Jira search doesn’t show results, make sure your API token and domain are correct.
- Use Notion’s “Created time” and “Last edited time” for smart dashboards.
- Combine clockit’s CSV output with your analytics tool or scripts.
📄 License
MIT License
© 2025 Overly Creative Tech