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.
@@ -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