crowdtime-cli 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- crowdtime_cli-0.3.0/PKG-INFO +287 -0
- crowdtime_cli-0.3.0/README.md +253 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/pyproject.toml +1 -1
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/__init__.py +1 -1
- crowdtime_cli-0.3.0/src/crowdtime_cli/commands/clients_cmd.py +321 -0
- crowdtime_cli-0.3.0/src/crowdtime_cli/commands/expense_cmd.py +383 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/invoice_cmd.py +312 -17
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/projects_cmd.py +90 -1
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/main.py +22 -2
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/SKILL.md +50 -6
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/references/commands.md +246 -8
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/references/workflows.md +249 -19
- crowdtime_cli-0.2.0/PKG-INFO +0 -140
- crowdtime_cli-0.2.0/README.md +0 -106
- crowdtime_cli-0.2.0/src/crowdtime_cli/commands/clients_cmd.py +0 -150
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/.gitignore +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/LICENSE +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/auth.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/client.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/__init__.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/ai_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/auth_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/config_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/favorites_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/log_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/org_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/report_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/skill_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/tasks_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/timer_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/timesheet_cmd.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/config.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/formatters.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/models.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/oauth.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/resolvers.py +0 -0
- {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/utils.py +0 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: crowdtime-cli
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: AI-powered time tracking CLI — a modern, developer-friendly alternative to Harvest
|
|
5
|
+
Project-URL: Homepage, https://crowdtime.lat
|
|
6
|
+
Project-URL: Documentation, https://crowdtime.lat/docs
|
|
7
|
+
Project-URL: Support, https://crowdtime.lat/support
|
|
8
|
+
Author-email: IT Crowd <dev@itcrowdarg.com>
|
|
9
|
+
License: Proprietary
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: ai,cli,harvest-alternative,productivity,time-tracking
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: Other/Proprietary License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Office/Business
|
|
22
|
+
Classifier: Typing :: Typed
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: httpx>=0.27.0
|
|
25
|
+
Requires-Dist: humanize>=4.0
|
|
26
|
+
Requires-Dist: keyring>=25.0
|
|
27
|
+
Requires-Dist: platformdirs>=4.0
|
|
28
|
+
Requires-Dist: pydantic>=2.0
|
|
29
|
+
Requires-Dist: python-dateutil>=2.9
|
|
30
|
+
Requires-Dist: rich>=13.0
|
|
31
|
+
Requires-Dist: tomlkit>=0.12.0
|
|
32
|
+
Requires-Dist: typer[all]>=0.12.0
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# CrowdTime CLI
|
|
36
|
+
|
|
37
|
+
**AI-powered time tracking from your terminal.** A modern, developer-friendly alternative to Harvest.
|
|
38
|
+
|
|
39
|
+
Track time, manage projects, log expenses, generate reports, submit timesheets, create invoices, and get AI-powered insights — all without leaving your terminal.
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
- **Fast time tracking** — Start/stop timers or log entries directly with natural duration formats (`2h30m`, `1:45`, `0.5d`)
|
|
44
|
+
- **AI-powered** — Natural language time entry, smart suggestions based on your patterns, and automatic standup/slack summaries
|
|
45
|
+
- **Timesheets** — Submit, approve, and reject timesheets with team overview for managers
|
|
46
|
+
- **Expense tracking** — Log expenses with categories, vendors, receipts, and billable flags; include on invoices
|
|
47
|
+
- **Invoicing** — Create invoices from tracked time and expenses, send PDFs, record payments, manage recurring templates and retainers
|
|
48
|
+
- **Rich terminal UI** — Beautiful tables, dashboards, and reports powered by Rich
|
|
49
|
+
- **Multi-org support** — Switch between organizations seamlessly
|
|
50
|
+
- **Secure by default** — API tokens stored in your OS keychain, never in plain text
|
|
51
|
+
- **Flexible reporting** — Daily, weekly, monthly reports in table, JSON, CSV, or Markdown formats
|
|
52
|
+
- **Favorites & templates** — Save common entries for one-command reuse
|
|
53
|
+
- **LLM skill integration** — Ships with skills for Claude Code, Codex, Gemini, and Cursor
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip install crowdtime-cli
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Requires Python 3.11+
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Authenticate
|
|
67
|
+
ct config set server.url https://api.crowdtime.lat
|
|
68
|
+
ct auth login
|
|
69
|
+
|
|
70
|
+
# Switch to your organization
|
|
71
|
+
ct org switch my-org
|
|
72
|
+
|
|
73
|
+
# Start tracking
|
|
74
|
+
ct timer start "Building REST API" -p backend -t "Development"
|
|
75
|
+
ct timer stop
|
|
76
|
+
|
|
77
|
+
# Or log time directly
|
|
78
|
+
ct log -p backend -t "Code Review" 2h "Reviewed auth module PR"
|
|
79
|
+
|
|
80
|
+
# Check your day
|
|
81
|
+
ct status
|
|
82
|
+
|
|
83
|
+
# Weekly report
|
|
84
|
+
ct report --week
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Command Overview
|
|
88
|
+
|
|
89
|
+
### Time Tracking
|
|
90
|
+
|
|
91
|
+
| Command | Alias | Description |
|
|
92
|
+
|---------|-------|-------------|
|
|
93
|
+
| `ct status` | `ct s` | Dashboard: running timer, today's entries, weekly total |
|
|
94
|
+
| `ct timer start` | `ct ts` | Start a timer with project and task |
|
|
95
|
+
| `ct timer stop` | `ct tx` | Stop the running timer and save the entry |
|
|
96
|
+
| `ct timer switch` | — | Atomically stop current timer and start a new one |
|
|
97
|
+
| `ct timer discard` | — | Discard running timer without saving |
|
|
98
|
+
| `ct log <duration> <desc>` | `ct l` | Log a time entry directly |
|
|
99
|
+
| `ct log list` | `ct ll` | List time entries (today, --week, --month) |
|
|
100
|
+
| `ct log edit <id>` | — | Edit an existing entry |
|
|
101
|
+
| `ct log delete <id>` | — | Delete a time entry |
|
|
102
|
+
|
|
103
|
+
### Projects & Organization
|
|
104
|
+
|
|
105
|
+
| Command | Alias | Description |
|
|
106
|
+
|---------|-------|-------------|
|
|
107
|
+
| `ct projects list` | `ct p` | List projects |
|
|
108
|
+
| `ct projects create` | — | Create a new project (auto-creates client if needed) |
|
|
109
|
+
| `ct projects switch` | — | Set a default project for new entries |
|
|
110
|
+
| `ct clients list` | — | List clients |
|
|
111
|
+
| `ct clients create` | — | Create a new client |
|
|
112
|
+
| `ct clients contacts <id>` | — | List contacts for a client |
|
|
113
|
+
| `ct clients add-contact <id>` | — | Add a contact to a client |
|
|
114
|
+
| `ct tasks list` | — | List tasks (optionally filtered by project) |
|
|
115
|
+
| `ct tasks create` | — | Create a task and assign to a project |
|
|
116
|
+
| `ct favorites list` | — | List saved entry templates |
|
|
117
|
+
| `ct favorites start <id>` | — | Start a timer from a saved template |
|
|
118
|
+
| `ct org list` | — | List your organizations |
|
|
119
|
+
| `ct org switch <slug>` | — | Switch active organization |
|
|
120
|
+
| `ct org members` | — | List organization members |
|
|
121
|
+
| `ct org invite <email>` | — | Invite a new member |
|
|
122
|
+
|
|
123
|
+
### Reporting & AI
|
|
124
|
+
|
|
125
|
+
| Command | Alias | Description |
|
|
126
|
+
|---------|-------|-------------|
|
|
127
|
+
| `ct report` | `ct r` | Generate reports (--week, --month, --group-by, --format) |
|
|
128
|
+
| `ct report projects` | — | Project breakdown report |
|
|
129
|
+
| `ct report team` | — | Team utilization report |
|
|
130
|
+
| `ct ai suggest` | — | Get AI suggestions based on your work patterns |
|
|
131
|
+
| `ct ai summarize` | — | AI-generated summaries (--for standup, --for slack, --copy) |
|
|
132
|
+
|
|
133
|
+
### Timesheets
|
|
134
|
+
|
|
135
|
+
| Command | Description |
|
|
136
|
+
|---------|-------------|
|
|
137
|
+
| `ct timesheet list` | List your timesheets (all statuses) |
|
|
138
|
+
| `ct timesheet submit --from DATE --to DATE` | Submit a timesheet for approval |
|
|
139
|
+
| `ct timesheet approve <id>` | Approve a submitted timesheet (manager+) |
|
|
140
|
+
| `ct timesheet reject <id> --notes "..."` | Reject with feedback (manager+) |
|
|
141
|
+
| `ct timesheet team` | Team overview: hours, entries, status per member (manager+) |
|
|
142
|
+
| `ct timesheet viewable-users` | List members you can view timesheets for |
|
|
143
|
+
|
|
144
|
+
### Expenses
|
|
145
|
+
|
|
146
|
+
| Command | Description |
|
|
147
|
+
|---------|-------------|
|
|
148
|
+
| `ct expense list` | List expenses (filter by --project, --category, --from/--to) |
|
|
149
|
+
| `ct expense create` | Create an expense (amount, vendor, date, category, project) |
|
|
150
|
+
| `ct expense edit <id>` | Edit an existing expense |
|
|
151
|
+
| `ct expense delete <id>` | Delete an expense |
|
|
152
|
+
| `ct expense categories` | List expense categories |
|
|
153
|
+
| `ct expense add-category` | Create a new expense category |
|
|
154
|
+
|
|
155
|
+
### Invoicing
|
|
156
|
+
|
|
157
|
+
| Command | Description |
|
|
158
|
+
|---------|-------------|
|
|
159
|
+
| `ct invoice list` | List invoices (filter by --status, --client, --type) |
|
|
160
|
+
| `ct invoice show <id>` | Detailed view with line items, totals, payments |
|
|
161
|
+
| `ct invoice create --client <id> --from DATE --to DATE` | Create invoice from tracked time |
|
|
162
|
+
| `ct invoice create-blank --client <id> --issue-date DATE` | Create empty invoice for manual items |
|
|
163
|
+
| `ct invoice add-item <id> --desc "..." --qty N --rate N` | Add a line item to a draft |
|
|
164
|
+
| `ct invoice send <id>` | Send invoice to client via email with PDF |
|
|
165
|
+
| `ct invoice pay <id> --amount N` | Record a payment |
|
|
166
|
+
| `ct invoice void <id> --reason "..."` | Void an invoice |
|
|
167
|
+
| `ct invoice pdf <id>` | Download invoice as PDF |
|
|
168
|
+
| `ct invoice duplicate <id>` | Duplicate as a new draft |
|
|
169
|
+
| `ct invoice recurring list` | List recurring invoice templates |
|
|
170
|
+
| `ct invoice retainer list` | List retainer agreements |
|
|
171
|
+
|
|
172
|
+
### Configuration & Skills
|
|
173
|
+
|
|
174
|
+
| Command | Description |
|
|
175
|
+
|---------|-------------|
|
|
176
|
+
| `ct config set KEY VALUE` | Set a config value (dot notation) |
|
|
177
|
+
| `ct config get KEY` | Get a config value |
|
|
178
|
+
| `ct config list` | Show all configuration |
|
|
179
|
+
| `ct config edit` | Open config in your editor |
|
|
180
|
+
| `ct skill install` | Install LLM skill (see below) |
|
|
181
|
+
| `ct skill status` | Show skill installation status |
|
|
182
|
+
| `ct skill uninstall` | Remove the skill |
|
|
183
|
+
|
|
184
|
+
## Duration Formats
|
|
185
|
+
|
|
186
|
+
`2h` | `2h30m` | `2:30` | `150m` | `0.25d` (1 day = 8h) | `1.5` (hours)
|
|
187
|
+
|
|
188
|
+
## Date Formats
|
|
189
|
+
|
|
190
|
+
`today` | `yesterday` | `monday`..`sunday` | `last friday` | `2026-03-10` | `3/10`
|
|
191
|
+
|
|
192
|
+
## LLM Skill Installation
|
|
193
|
+
|
|
194
|
+
CrowdTime ships with built-in skills for AI coding assistants. Once installed, your LLM can track time, manage timesheets, and create invoices on your behalf.
|
|
195
|
+
|
|
196
|
+
### Supported tools
|
|
197
|
+
|
|
198
|
+
| Tool | Skill activation |
|
|
199
|
+
|------|-----------------|
|
|
200
|
+
| **Claude Code** | Auto-activates when time tracking is mentioned, or use `/crowdtime` |
|
|
201
|
+
| **Codex** | Auto-activates, or use `$crowdtime` |
|
|
202
|
+
| **Gemini** | Auto-activates when time tracking is mentioned |
|
|
203
|
+
| **Cursor** | Auto-activates in agent mode |
|
|
204
|
+
|
|
205
|
+
### Install the skill
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Auto-detect your tool and install to the current project
|
|
209
|
+
ct skill install
|
|
210
|
+
|
|
211
|
+
# Install globally (user-wide, works across all projects)
|
|
212
|
+
ct skill install --global
|
|
213
|
+
|
|
214
|
+
# Install for a specific tool
|
|
215
|
+
ct skill install --tool claude --global
|
|
216
|
+
ct skill install --tool codex
|
|
217
|
+
ct skill install --tool gemini --global
|
|
218
|
+
ct skill install --tool cursor
|
|
219
|
+
|
|
220
|
+
# Install for all detected tools at once
|
|
221
|
+
ct skill install --all --global
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Manage skills
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# Check installation status across all tools
|
|
228
|
+
ct skill status
|
|
229
|
+
|
|
230
|
+
# Update to latest version (re-run install)
|
|
231
|
+
ct skill install --global
|
|
232
|
+
|
|
233
|
+
# Uninstall
|
|
234
|
+
ct skill uninstall --global
|
|
235
|
+
ct skill uninstall --tool claude
|
|
236
|
+
ct skill uninstall --all
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### What the skill enables
|
|
240
|
+
|
|
241
|
+
Once installed, your LLM coding assistant can:
|
|
242
|
+
|
|
243
|
+
- **Track time** — `"log 2 hours on the backend project for API work"`
|
|
244
|
+
- **Manage timers** — `"start a timer for code review on project alpha"`
|
|
245
|
+
- **Submit timesheets** — `"submit my timesheet for this week"`
|
|
246
|
+
- **Review team** — `"show me the team's timesheet status for this week"`
|
|
247
|
+
- **Create invoices** — `"create an invoice for Acme Corp for March"`
|
|
248
|
+
- **Send invoices** — `"send the draft invoice to the client"`
|
|
249
|
+
- **Generate reports** — `"show me this month's hours by project"`
|
|
250
|
+
|
|
251
|
+
The skill teaches the LLM to construct proper CLI commands — it never uses magic routing or guesses parameters.
|
|
252
|
+
|
|
253
|
+
## Configuration
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
ct config set server.url https://api.crowdtime.lat # API server
|
|
257
|
+
ct config set defaults.project my-project # Default project
|
|
258
|
+
ct config set defaults.daily_target 7h # Daily hour target
|
|
259
|
+
ct config list # Show all settings
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Config is stored at `~/.crowdtime/config.toml`.
|
|
263
|
+
|
|
264
|
+
## Authentication
|
|
265
|
+
|
|
266
|
+
CrowdTime supports multiple auth methods:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
ct auth login # Browser-based Google OAuth (default)
|
|
270
|
+
ct auth login --token <token> # API token (for CI/scripts)
|
|
271
|
+
ct auth login --no-browser # Token prompt (headless environments)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
API tokens are stored securely in your OS keychain via [keyring](https://pypi.org/project/keyring/).
|
|
275
|
+
|
|
276
|
+
## Requirements
|
|
277
|
+
|
|
278
|
+
- Python 3.11+
|
|
279
|
+
- A CrowdTime account at [crowdtime.lat](https://crowdtime.lat)
|
|
280
|
+
|
|
281
|
+
## Support
|
|
282
|
+
|
|
283
|
+
For issues and feature requests, contact [dev@itcrowdarg.com](mailto:dev@itcrowdarg.com).
|
|
284
|
+
|
|
285
|
+
## License
|
|
286
|
+
|
|
287
|
+
Proprietary. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# CrowdTime CLI
|
|
2
|
+
|
|
3
|
+
**AI-powered time tracking from your terminal.** A modern, developer-friendly alternative to Harvest.
|
|
4
|
+
|
|
5
|
+
Track time, manage projects, log expenses, generate reports, submit timesheets, create invoices, and get AI-powered insights — all without leaving your terminal.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Fast time tracking** — Start/stop timers or log entries directly with natural duration formats (`2h30m`, `1:45`, `0.5d`)
|
|
10
|
+
- **AI-powered** — Natural language time entry, smart suggestions based on your patterns, and automatic standup/slack summaries
|
|
11
|
+
- **Timesheets** — Submit, approve, and reject timesheets with team overview for managers
|
|
12
|
+
- **Expense tracking** — Log expenses with categories, vendors, receipts, and billable flags; include on invoices
|
|
13
|
+
- **Invoicing** — Create invoices from tracked time and expenses, send PDFs, record payments, manage recurring templates and retainers
|
|
14
|
+
- **Rich terminal UI** — Beautiful tables, dashboards, and reports powered by Rich
|
|
15
|
+
- **Multi-org support** — Switch between organizations seamlessly
|
|
16
|
+
- **Secure by default** — API tokens stored in your OS keychain, never in plain text
|
|
17
|
+
- **Flexible reporting** — Daily, weekly, monthly reports in table, JSON, CSV, or Markdown formats
|
|
18
|
+
- **Favorites & templates** — Save common entries for one-command reuse
|
|
19
|
+
- **LLM skill integration** — Ships with skills for Claude Code, Codex, Gemini, and Cursor
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install crowdtime-cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Requires Python 3.11+
|
|
28
|
+
|
|
29
|
+
## Quick Start
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Authenticate
|
|
33
|
+
ct config set server.url https://api.crowdtime.lat
|
|
34
|
+
ct auth login
|
|
35
|
+
|
|
36
|
+
# Switch to your organization
|
|
37
|
+
ct org switch my-org
|
|
38
|
+
|
|
39
|
+
# Start tracking
|
|
40
|
+
ct timer start "Building REST API" -p backend -t "Development"
|
|
41
|
+
ct timer stop
|
|
42
|
+
|
|
43
|
+
# Or log time directly
|
|
44
|
+
ct log -p backend -t "Code Review" 2h "Reviewed auth module PR"
|
|
45
|
+
|
|
46
|
+
# Check your day
|
|
47
|
+
ct status
|
|
48
|
+
|
|
49
|
+
# Weekly report
|
|
50
|
+
ct report --week
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Command Overview
|
|
54
|
+
|
|
55
|
+
### Time Tracking
|
|
56
|
+
|
|
57
|
+
| Command | Alias | Description |
|
|
58
|
+
|---------|-------|-------------|
|
|
59
|
+
| `ct status` | `ct s` | Dashboard: running timer, today's entries, weekly total |
|
|
60
|
+
| `ct timer start` | `ct ts` | Start a timer with project and task |
|
|
61
|
+
| `ct timer stop` | `ct tx` | Stop the running timer and save the entry |
|
|
62
|
+
| `ct timer switch` | — | Atomically stop current timer and start a new one |
|
|
63
|
+
| `ct timer discard` | — | Discard running timer without saving |
|
|
64
|
+
| `ct log <duration> <desc>` | `ct l` | Log a time entry directly |
|
|
65
|
+
| `ct log list` | `ct ll` | List time entries (today, --week, --month) |
|
|
66
|
+
| `ct log edit <id>` | — | Edit an existing entry |
|
|
67
|
+
| `ct log delete <id>` | — | Delete a time entry |
|
|
68
|
+
|
|
69
|
+
### Projects & Organization
|
|
70
|
+
|
|
71
|
+
| Command | Alias | Description |
|
|
72
|
+
|---------|-------|-------------|
|
|
73
|
+
| `ct projects list` | `ct p` | List projects |
|
|
74
|
+
| `ct projects create` | — | Create a new project (auto-creates client if needed) |
|
|
75
|
+
| `ct projects switch` | — | Set a default project for new entries |
|
|
76
|
+
| `ct clients list` | — | List clients |
|
|
77
|
+
| `ct clients create` | — | Create a new client |
|
|
78
|
+
| `ct clients contacts <id>` | — | List contacts for a client |
|
|
79
|
+
| `ct clients add-contact <id>` | — | Add a contact to a client |
|
|
80
|
+
| `ct tasks list` | — | List tasks (optionally filtered by project) |
|
|
81
|
+
| `ct tasks create` | — | Create a task and assign to a project |
|
|
82
|
+
| `ct favorites list` | — | List saved entry templates |
|
|
83
|
+
| `ct favorites start <id>` | — | Start a timer from a saved template |
|
|
84
|
+
| `ct org list` | — | List your organizations |
|
|
85
|
+
| `ct org switch <slug>` | — | Switch active organization |
|
|
86
|
+
| `ct org members` | — | List organization members |
|
|
87
|
+
| `ct org invite <email>` | — | Invite a new member |
|
|
88
|
+
|
|
89
|
+
### Reporting & AI
|
|
90
|
+
|
|
91
|
+
| Command | Alias | Description |
|
|
92
|
+
|---------|-------|-------------|
|
|
93
|
+
| `ct report` | `ct r` | Generate reports (--week, --month, --group-by, --format) |
|
|
94
|
+
| `ct report projects` | — | Project breakdown report |
|
|
95
|
+
| `ct report team` | — | Team utilization report |
|
|
96
|
+
| `ct ai suggest` | — | Get AI suggestions based on your work patterns |
|
|
97
|
+
| `ct ai summarize` | — | AI-generated summaries (--for standup, --for slack, --copy) |
|
|
98
|
+
|
|
99
|
+
### Timesheets
|
|
100
|
+
|
|
101
|
+
| Command | Description |
|
|
102
|
+
|---------|-------------|
|
|
103
|
+
| `ct timesheet list` | List your timesheets (all statuses) |
|
|
104
|
+
| `ct timesheet submit --from DATE --to DATE` | Submit a timesheet for approval |
|
|
105
|
+
| `ct timesheet approve <id>` | Approve a submitted timesheet (manager+) |
|
|
106
|
+
| `ct timesheet reject <id> --notes "..."` | Reject with feedback (manager+) |
|
|
107
|
+
| `ct timesheet team` | Team overview: hours, entries, status per member (manager+) |
|
|
108
|
+
| `ct timesheet viewable-users` | List members you can view timesheets for |
|
|
109
|
+
|
|
110
|
+
### Expenses
|
|
111
|
+
|
|
112
|
+
| Command | Description |
|
|
113
|
+
|---------|-------------|
|
|
114
|
+
| `ct expense list` | List expenses (filter by --project, --category, --from/--to) |
|
|
115
|
+
| `ct expense create` | Create an expense (amount, vendor, date, category, project) |
|
|
116
|
+
| `ct expense edit <id>` | Edit an existing expense |
|
|
117
|
+
| `ct expense delete <id>` | Delete an expense |
|
|
118
|
+
| `ct expense categories` | List expense categories |
|
|
119
|
+
| `ct expense add-category` | Create a new expense category |
|
|
120
|
+
|
|
121
|
+
### Invoicing
|
|
122
|
+
|
|
123
|
+
| Command | Description |
|
|
124
|
+
|---------|-------------|
|
|
125
|
+
| `ct invoice list` | List invoices (filter by --status, --client, --type) |
|
|
126
|
+
| `ct invoice show <id>` | Detailed view with line items, totals, payments |
|
|
127
|
+
| `ct invoice create --client <id> --from DATE --to DATE` | Create invoice from tracked time |
|
|
128
|
+
| `ct invoice create-blank --client <id> --issue-date DATE` | Create empty invoice for manual items |
|
|
129
|
+
| `ct invoice add-item <id> --desc "..." --qty N --rate N` | Add a line item to a draft |
|
|
130
|
+
| `ct invoice send <id>` | Send invoice to client via email with PDF |
|
|
131
|
+
| `ct invoice pay <id> --amount N` | Record a payment |
|
|
132
|
+
| `ct invoice void <id> --reason "..."` | Void an invoice |
|
|
133
|
+
| `ct invoice pdf <id>` | Download invoice as PDF |
|
|
134
|
+
| `ct invoice duplicate <id>` | Duplicate as a new draft |
|
|
135
|
+
| `ct invoice recurring list` | List recurring invoice templates |
|
|
136
|
+
| `ct invoice retainer list` | List retainer agreements |
|
|
137
|
+
|
|
138
|
+
### Configuration & Skills
|
|
139
|
+
|
|
140
|
+
| Command | Description |
|
|
141
|
+
|---------|-------------|
|
|
142
|
+
| `ct config set KEY VALUE` | Set a config value (dot notation) |
|
|
143
|
+
| `ct config get KEY` | Get a config value |
|
|
144
|
+
| `ct config list` | Show all configuration |
|
|
145
|
+
| `ct config edit` | Open config in your editor |
|
|
146
|
+
| `ct skill install` | Install LLM skill (see below) |
|
|
147
|
+
| `ct skill status` | Show skill installation status |
|
|
148
|
+
| `ct skill uninstall` | Remove the skill |
|
|
149
|
+
|
|
150
|
+
## Duration Formats
|
|
151
|
+
|
|
152
|
+
`2h` | `2h30m` | `2:30` | `150m` | `0.25d` (1 day = 8h) | `1.5` (hours)
|
|
153
|
+
|
|
154
|
+
## Date Formats
|
|
155
|
+
|
|
156
|
+
`today` | `yesterday` | `monday`..`sunday` | `last friday` | `2026-03-10` | `3/10`
|
|
157
|
+
|
|
158
|
+
## LLM Skill Installation
|
|
159
|
+
|
|
160
|
+
CrowdTime ships with built-in skills for AI coding assistants. Once installed, your LLM can track time, manage timesheets, and create invoices on your behalf.
|
|
161
|
+
|
|
162
|
+
### Supported tools
|
|
163
|
+
|
|
164
|
+
| Tool | Skill activation |
|
|
165
|
+
|------|-----------------|
|
|
166
|
+
| **Claude Code** | Auto-activates when time tracking is mentioned, or use `/crowdtime` |
|
|
167
|
+
| **Codex** | Auto-activates, or use `$crowdtime` |
|
|
168
|
+
| **Gemini** | Auto-activates when time tracking is mentioned |
|
|
169
|
+
| **Cursor** | Auto-activates in agent mode |
|
|
170
|
+
|
|
171
|
+
### Install the skill
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Auto-detect your tool and install to the current project
|
|
175
|
+
ct skill install
|
|
176
|
+
|
|
177
|
+
# Install globally (user-wide, works across all projects)
|
|
178
|
+
ct skill install --global
|
|
179
|
+
|
|
180
|
+
# Install for a specific tool
|
|
181
|
+
ct skill install --tool claude --global
|
|
182
|
+
ct skill install --tool codex
|
|
183
|
+
ct skill install --tool gemini --global
|
|
184
|
+
ct skill install --tool cursor
|
|
185
|
+
|
|
186
|
+
# Install for all detected tools at once
|
|
187
|
+
ct skill install --all --global
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Manage skills
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Check installation status across all tools
|
|
194
|
+
ct skill status
|
|
195
|
+
|
|
196
|
+
# Update to latest version (re-run install)
|
|
197
|
+
ct skill install --global
|
|
198
|
+
|
|
199
|
+
# Uninstall
|
|
200
|
+
ct skill uninstall --global
|
|
201
|
+
ct skill uninstall --tool claude
|
|
202
|
+
ct skill uninstall --all
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### What the skill enables
|
|
206
|
+
|
|
207
|
+
Once installed, your LLM coding assistant can:
|
|
208
|
+
|
|
209
|
+
- **Track time** — `"log 2 hours on the backend project for API work"`
|
|
210
|
+
- **Manage timers** — `"start a timer for code review on project alpha"`
|
|
211
|
+
- **Submit timesheets** — `"submit my timesheet for this week"`
|
|
212
|
+
- **Review team** — `"show me the team's timesheet status for this week"`
|
|
213
|
+
- **Create invoices** — `"create an invoice for Acme Corp for March"`
|
|
214
|
+
- **Send invoices** — `"send the draft invoice to the client"`
|
|
215
|
+
- **Generate reports** — `"show me this month's hours by project"`
|
|
216
|
+
|
|
217
|
+
The skill teaches the LLM to construct proper CLI commands — it never uses magic routing or guesses parameters.
|
|
218
|
+
|
|
219
|
+
## Configuration
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
ct config set server.url https://api.crowdtime.lat # API server
|
|
223
|
+
ct config set defaults.project my-project # Default project
|
|
224
|
+
ct config set defaults.daily_target 7h # Daily hour target
|
|
225
|
+
ct config list # Show all settings
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Config is stored at `~/.crowdtime/config.toml`.
|
|
229
|
+
|
|
230
|
+
## Authentication
|
|
231
|
+
|
|
232
|
+
CrowdTime supports multiple auth methods:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
ct auth login # Browser-based Google OAuth (default)
|
|
236
|
+
ct auth login --token <token> # API token (for CI/scripts)
|
|
237
|
+
ct auth login --no-browser # Token prompt (headless environments)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
API tokens are stored securely in your OS keychain via [keyring](https://pypi.org/project/keyring/).
|
|
241
|
+
|
|
242
|
+
## Requirements
|
|
243
|
+
|
|
244
|
+
- Python 3.11+
|
|
245
|
+
- A CrowdTime account at [crowdtime.lat](https://crowdtime.lat)
|
|
246
|
+
|
|
247
|
+
## Support
|
|
248
|
+
|
|
249
|
+
For issues and feature requests, contact [dev@itcrowdarg.com](mailto:dev@itcrowdarg.com).
|
|
250
|
+
|
|
251
|
+
## License
|
|
252
|
+
|
|
253
|
+
Proprietary. See [LICENSE](LICENSE) for details.
|