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.
Files changed (37) hide show
  1. crowdtime_cli-0.3.0/PKG-INFO +287 -0
  2. crowdtime_cli-0.3.0/README.md +253 -0
  3. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/pyproject.toml +1 -1
  4. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/__init__.py +1 -1
  5. crowdtime_cli-0.3.0/src/crowdtime_cli/commands/clients_cmd.py +321 -0
  6. crowdtime_cli-0.3.0/src/crowdtime_cli/commands/expense_cmd.py +383 -0
  7. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/invoice_cmd.py +312 -17
  8. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/projects_cmd.py +90 -1
  9. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/main.py +22 -2
  10. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/SKILL.md +50 -6
  11. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/references/commands.md +246 -8
  12. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/skills/crowdtime/references/workflows.md +249 -19
  13. crowdtime_cli-0.2.0/PKG-INFO +0 -140
  14. crowdtime_cli-0.2.0/README.md +0 -106
  15. crowdtime_cli-0.2.0/src/crowdtime_cli/commands/clients_cmd.py +0 -150
  16. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/.gitignore +0 -0
  17. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/LICENSE +0 -0
  18. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/auth.py +0 -0
  19. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/client.py +0 -0
  20. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/__init__.py +0 -0
  21. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/ai_cmd.py +0 -0
  22. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/auth_cmd.py +0 -0
  23. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/config_cmd.py +0 -0
  24. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/favorites_cmd.py +0 -0
  25. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/log_cmd.py +0 -0
  26. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/org_cmd.py +0 -0
  27. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/report_cmd.py +0 -0
  28. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/skill_cmd.py +0 -0
  29. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/tasks_cmd.py +0 -0
  30. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/timer_cmd.py +0 -0
  31. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/commands/timesheet_cmd.py +0 -0
  32. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/config.py +0 -0
  33. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/formatters.py +0 -0
  34. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/models.py +0 -0
  35. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/oauth.py +0 -0
  36. {crowdtime_cli-0.2.0 → crowdtime_cli-0.3.0}/src/crowdtime_cli/resolvers.py +0 -0
  37. {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.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "crowdtime-cli"
3
- version = "0.2.0"
3
+ version = "0.3.0"
4
4
  description = "AI-powered time tracking CLI — a modern, developer-friendly alternative to Harvest"
5
5
  readme = "README.md"
6
6
  license = {text = "Proprietary"}
@@ -1,3 +1,3 @@
1
1
  """CrowdTime CLI - AI-powered time tracking from the command line."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.3.0"