crowdtime-cli 0.1.0__py3-none-any.whl
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/__init__.py +3 -0
- crowdtime_cli/auth.py +69 -0
- crowdtime_cli/client.py +177 -0
- crowdtime_cli/commands/__init__.py +1 -0
- crowdtime_cli/commands/ai_cmd.py +211 -0
- crowdtime_cli/commands/auth_cmd.py +160 -0
- crowdtime_cli/commands/clients_cmd.py +150 -0
- crowdtime_cli/commands/config_cmd.py +91 -0
- crowdtime_cli/commands/favorites_cmd.py +128 -0
- crowdtime_cli/commands/log_cmd.py +298 -0
- crowdtime_cli/commands/org_cmd.py +134 -0
- crowdtime_cli/commands/projects_cmd.py +175 -0
- crowdtime_cli/commands/report_cmd.py +242 -0
- crowdtime_cli/commands/skill_cmd.py +266 -0
- crowdtime_cli/commands/tasks_cmd.py +101 -0
- crowdtime_cli/commands/timer_cmd.py +207 -0
- crowdtime_cli/config.py +125 -0
- crowdtime_cli/formatters.py +395 -0
- crowdtime_cli/main.py +334 -0
- crowdtime_cli/models.py +146 -0
- crowdtime_cli/oauth.py +107 -0
- crowdtime_cli/resolvers.py +80 -0
- crowdtime_cli/skills/crowdtime/SKILL.md +193 -0
- crowdtime_cli/skills/crowdtime/references/commands.md +659 -0
- crowdtime_cli/skills/crowdtime/references/workflows.md +286 -0
- crowdtime_cli/utils.py +166 -0
- crowdtime_cli-0.1.0.dist-info/METADATA +140 -0
- crowdtime_cli-0.1.0.dist-info/RECORD +31 -0
- crowdtime_cli-0.1.0.dist-info/WHEEL +4 -0
- crowdtime_cli-0.1.0.dist-info/entry_points.txt +3 -0
- crowdtime_cli-0.1.0.dist-info/licenses/LICENSE +77 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crowdtime
|
|
3
|
+
description: "CrowdTime CLI time tracking assistant. Use this skill whenever the user mentions time tracking, logging hours, starting or stopping timers, managing projects or tasks, generating time reports, checking work status, or anything related to the CrowdTime CLI tool (ct/crowdtime commands). Also trigger when users mention timesheets, billable hours, weekly summaries, project budgets, or want to track what they worked on. Even if they don't say 'CrowdTime' explicitly — if they're talking about tracking time, logging work, or checking hours in a context where the CrowdTime CLI is available, use this skill."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CrowdTime CLI
|
|
7
|
+
|
|
8
|
+
CrowdTime is an AI-powered time tracking CLI. The primary commands are `crowdtime` and `ct` (short alias). This skill teaches you how to use the CLI to help users track time, manage projects, and generate reports.
|
|
9
|
+
|
|
10
|
+
## Before Using Any Command
|
|
11
|
+
|
|
12
|
+
Check if the CLI is installed and authenticated:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ct auth whoami
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
If not authenticated, guide the user through setup:
|
|
19
|
+
```bash
|
|
20
|
+
ct config set server.url https://api.crowdtime.lat # or http://localhost:8001 for local dev
|
|
21
|
+
ct auth login # Opens browser for Google OAuth (default)
|
|
22
|
+
ct auth login --token <their-api-token> # Or provide a token directly
|
|
23
|
+
ct auth login --no-browser # Prompt for token (headless environments)
|
|
24
|
+
ct org switch <org-slug>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Core Commands Quick Reference
|
|
28
|
+
|
|
29
|
+
### Status (default command)
|
|
30
|
+
```bash
|
|
31
|
+
ct # Full dashboard: running timer, today's entries, weekly breakdown
|
|
32
|
+
ct status # Same as bare ct
|
|
33
|
+
ct s # Short alias
|
|
34
|
+
ct s --json # Machine-readable output
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Timers
|
|
38
|
+
```bash
|
|
39
|
+
ct timer start "description" -p project-slug -t "task name" # Start a timer
|
|
40
|
+
ct timer stop # Stop the running timer
|
|
41
|
+
ct timer status # Check running timer
|
|
42
|
+
ct timer switch "new task" -p other-project # Stop current, start new (atomic)
|
|
43
|
+
ct timer discard # Discard without saving
|
|
44
|
+
|
|
45
|
+
# Short aliases
|
|
46
|
+
ct ts "working on API" -p backend # timer start
|
|
47
|
+
ct tx # timer stop
|
|
48
|
+
ct t # timer status
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Logging Time
|
|
52
|
+
|
|
53
|
+
**Options MUST come BEFORE positional arguments (duration, description).**
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Log time entries (all equivalent):
|
|
57
|
+
ct log -p project-slug 2h "code review"
|
|
58
|
+
ct log -p project-slug -t "Design" -d yesterday 2h30m "meeting"
|
|
59
|
+
ct log -p project-slug -b 1:30 "design work"
|
|
60
|
+
|
|
61
|
+
# Short alias — `ct l`:
|
|
62
|
+
ct l -p project-slug 2h "code review"
|
|
63
|
+
ct l -p project-slug -t "Research" -d yesterday 2h30m "meeting"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Other log commands:
|
|
67
|
+
```bash
|
|
68
|
+
ct log list --week # This week's entries
|
|
69
|
+
ct log list --json # JSON output
|
|
70
|
+
ct log edit <entry-id> --duration 3h # Edit an entry
|
|
71
|
+
ct log edit <entry-id> --task "Research" # Change task
|
|
72
|
+
ct log delete <entry-id> # Delete an entry
|
|
73
|
+
|
|
74
|
+
# Short aliases
|
|
75
|
+
ct ll # log list (today)
|
|
76
|
+
ct ll --week # log list this week
|
|
77
|
+
ct ll --month # log list this month
|
|
78
|
+
ct ll --json # log list as JSON
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Duration formats**: `2h`, `2h30m`, `2:30`, `150m`, `0.25d` (1 day = 8h), or plain number (hours)
|
|
82
|
+
|
|
83
|
+
**Date formats**: `today`, `yesterday`, `monday`..`sunday`, `last friday`, `2026-03-10`, `3/10`
|
|
84
|
+
|
|
85
|
+
### Clients
|
|
86
|
+
```bash
|
|
87
|
+
ct clients list # List all clients
|
|
88
|
+
ct clients show <id> # Client details
|
|
89
|
+
ct clients create "Acme Corp" # Create a client
|
|
90
|
+
ct clients create "Acme" --contact "John" --email john@acme.com
|
|
91
|
+
ct clients archive <id> # Archive a client
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Projects
|
|
95
|
+
```bash
|
|
96
|
+
ct projects list # List all projects
|
|
97
|
+
ct projects show <id> # Project details
|
|
98
|
+
ct projects create "New Project" --client "Acme" --budget 100 -b
|
|
99
|
+
ct projects archive <id> # Archive a project
|
|
100
|
+
ct projects switch <slug> # Set default project
|
|
101
|
+
|
|
102
|
+
# Short alias
|
|
103
|
+
ct p # projects list
|
|
104
|
+
ct p -a # include archived
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Note:** `--client` on `projects create` accepts a client name. If the client doesn't exist yet, it will be auto-created.
|
|
108
|
+
|
|
109
|
+
### Tasks
|
|
110
|
+
```bash
|
|
111
|
+
ct tasks list # List all org tasks
|
|
112
|
+
ct tasks list -p project-slug # Filter by project
|
|
113
|
+
ct tasks create "Code Review" -p project-slug -b # Create and assign to project
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Note:** `tasks create -p` creates the task at the org level AND assigns it to the specified project. The `-t` flag on `ct log create` and `ct timer start` accepts task names — if the task doesn't exist, it will be auto-created and assigned to the project.
|
|
117
|
+
|
|
118
|
+
### Reports
|
|
119
|
+
```bash
|
|
120
|
+
ct report --week # This week (default)
|
|
121
|
+
ct report --month # This month
|
|
122
|
+
ct report --today # Today
|
|
123
|
+
ct report --from 2026-03-01 --to 2026-03-15 -p project-slug
|
|
124
|
+
ct report -g day # Group by day (also: project, task, client)
|
|
125
|
+
ct report -f csv # Output as CSV (also: table, json, markdown)
|
|
126
|
+
ct report projects --month # Project breakdown
|
|
127
|
+
ct report team --week # Team utilization
|
|
128
|
+
|
|
129
|
+
# Short alias
|
|
130
|
+
ct r --week # report this week
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### AI Features
|
|
134
|
+
```bash
|
|
135
|
+
ct ai suggest # Get AI suggestions based on your patterns
|
|
136
|
+
ct ai summarize --week # Weekly summary
|
|
137
|
+
ct ai summarize --for standup # Formatted for standup
|
|
138
|
+
ct ai summarize --for slack --copy # Formatted for Slack, copied to clipboard
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Favorites
|
|
142
|
+
```bash
|
|
143
|
+
ct favorites list # List saved templates
|
|
144
|
+
ct favorites create "Daily standup" -p meetings -t standup
|
|
145
|
+
ct favorites start <id> # Start timer from template
|
|
146
|
+
ct favorites delete <id>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Organizations
|
|
150
|
+
```bash
|
|
151
|
+
ct org list # List your organizations
|
|
152
|
+
ct org switch <slug> # Switch active organization
|
|
153
|
+
ct org members # List members
|
|
154
|
+
ct org invite user@example.com -r member
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Configuration
|
|
158
|
+
```bash
|
|
159
|
+
ct config list # Show all config
|
|
160
|
+
ct config set server.url https://... # Set server URL
|
|
161
|
+
ct config set defaults.project myproj # Set default project
|
|
162
|
+
ct config set defaults.daily_target 7h # Set daily target
|
|
163
|
+
ct config edit # Open in editor
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Common Workflows
|
|
167
|
+
|
|
168
|
+
Read `references/workflows.md` for detailed multi-step workflow patterns including:
|
|
169
|
+
- Daily time tracking routines
|
|
170
|
+
- End-of-week reporting
|
|
171
|
+
- Project setup and management
|
|
172
|
+
- Bulk time entry for past days
|
|
173
|
+
- Team management and timesheets
|
|
174
|
+
|
|
175
|
+
## Complete Command Reference
|
|
176
|
+
|
|
177
|
+
Read `references/commands.md` for the full reference of every command, subcommand, flag, and option available in the CLI.
|
|
178
|
+
|
|
179
|
+
## Guidelines for Helping Users
|
|
180
|
+
|
|
181
|
+
1. **Always check status first** — run `ct s --json` to understand current state (running timer, today's entries) before suggesting actions
|
|
182
|
+
2. **Always use explicit commands** — always construct the full `ct log`, `ct timer start`, etc. commands with proper flags. Never use magic routing (`ct "natural language"`) or `ct ai parse` — you are an LLM fully capable of constructing the correct command yourself
|
|
183
|
+
3. **Always ask for the project if missing** — if the user asks to log time without specifying a project, ASK them which project before running the command. Run `ct p --json` to list available projects and present them as options. Never log time without a project unless the user has a default set (check `ct config get defaults.project`). If there's only one project available, use it automatically without asking
|
|
184
|
+
4. **Project identifiers** — the `-p` flag on `ct log`, `ct timer start`, etc. accepts a project **slug** (e.g. `crowdtime-dev`) or **UUID** — NOT the display name. Get the slug or UUID from `ct p --json` first
|
|
185
|
+
5. **Task identifiers** — the `-t` flag accepts a task **name** or **UUID**. The CLI will auto-resolve names to UUIDs. If a task doesn't exist, it will be auto-created and assigned to the project. **Prefer using tasks when logging time** — they make reports and summaries much more useful. If the user doesn't specify a task but describes their work (e.g. "code review", "meeting", "design"), suggest an appropriate task name
|
|
186
|
+
6. **Flag ordering for `ct log` / `ct l`** — ALL options (`-p`, `-d`, `-b`, `-t`) MUST come BEFORE the positional arguments (duration, description). Example: `ct log -p myproject -t "Research" -d yesterday 2h "description"`. Getting this wrong causes errors
|
|
187
|
+
7. **Use `--json` for parsing** — when you need to process output programmatically, add `--json` to any command
|
|
188
|
+
8. **Respect running timers** — check `ct t --json` before starting a new timer; use `ct timer switch` to atomically swap
|
|
189
|
+
9. **Default project** — if the user frequently logs to the same project, suggest `ct projects switch <slug>` to set a default
|
|
190
|
+
10. **Date intelligence** — the CLI understands natural dates; use `yesterday`, `last friday`, etc. rather than computing ISO dates
|
|
191
|
+
11. **Confirm destructive actions** — `delete`, `discard`, and `archive` commands ask for confirmation; use `--force` only when the user explicitly wants to skip
|
|
192
|
+
12. **Output formats** — `ct report` supports `table`, `json`, `csv`, and `markdown` via `--format`; suggest `csv` for spreadsheet export, `markdown` for docs
|
|
193
|
+
13. **Ask for details when vague** — if the user's request is ambiguous (e.g. "log 2 hours" with no description or project), ask them for the missing context rather than guessing. It's better to ask one clarifying question than to log something wrong that needs to be edited or deleted
|