td-ai-tools 1.2.2 → 1.2.3

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.
@@ -1,75 +0,0 @@
1
- ---
2
- name: everhour-basecamp-estimates
3
- version: 1.0.0
4
- description: Bulk update Everhour task estimates from a Basecamp todo or todolist URL, then append bracketed hours to the Basecamp todo titles.
5
- alwaysApply: false
6
- ---
7
-
8
- Use this skill when the user wants to update Everhour task estimates in bulk from a Basecamp todo or todolist URL.
9
-
10
- ## Files
11
-
12
- - Local config: `.agents/skills/everhour-basecamp-estimates/.env`
13
- - Example config: `.agents/skills/everhour-basecamp-estimates/.env.example`
14
- - Workflow script: `.agents/skills/everhour-basecamp-estimates/scripts/update_estimates.py`
15
-
16
- ## Required inputs
17
-
18
- - A Basecamp todo or todolist URL
19
- - Either one estimate in hours to apply to every active task, or a JSON array of per-task estimates in hours
20
-
21
- ## Workflow
22
-
23
- 1. Confirm `.agents/skills/everhour-basecamp-estimates/.env` exists and contains:
24
- - `EVERHOUR_API_KEY`
25
- - `EVERHOUR_PROJECT_ID`
26
- 2. Run the bundled script from the repo root:
27
-
28
- ```bash
29
- python3 .agents/skills/everhour-basecamp-estimates/scripts/update_estimates.py \
30
- "https://3.basecamp.com/..." \
31
- 2.5
32
- ```
33
-
34
- 3. For todolists that need different estimates per todo, pass a JSON array. The array length must match the number of active todos after completed items are skipped:
35
-
36
- ```bash
37
- python3 .agents/skills/everhour-basecamp-estimates/scripts/update_estimates.py \
38
- "https://3.basecamp.com/..." \
39
- "[1,2.5,4]"
40
- ```
41
-
42
- 4. Use `--dry-run` first if the user wants to review matches before mutating anything:
43
-
44
- ```bash
45
- python3 .agents/skills/everhour-basecamp-estimates/scripts/update_estimates.py \
46
- "https://3.basecamp.com/..." \
47
- "[1,2.5,4]" \
48
- --dry-run
49
- ```
50
-
51
- ## Behavior
52
-
53
- - The script parses the Basecamp URL with the Basecamp CLI.
54
- - For a todo URL, it loads one todo title.
55
- - For a todolist URL, it loads every todo title in that list.
56
- - Completed Basecamp todos are skipped.
57
- - A scalar estimate is applied to each active todo.
58
- - A JSON estimate array is applied in active-todo order and must match the active todo count exactly.
59
- - It matches Basecamp titles against Everhour task names inside the configured project.
60
- - If multiple Everhour tasks have the same normalized title, it selects the task whose Everhour task id or URL maps to the Basecamp todo id.
61
- - Matching is exact after normalization:
62
- - trim whitespace
63
- - collapse repeated spaces
64
- - case-insensitive compare
65
- - strip a trailing estimate suffix like `[2.5h]` before matching
66
- - It updates Everhour estimates first, converting hours to seconds and sending an overall estimate.
67
- - Only after all Everhour updates succeed does it rename the Basecamp todos to append the bracketed hours suffix.
68
-
69
- ## Guardrails
70
-
71
- - If any Basecamp title has no Everhour match, stop and report it.
72
- - If any Basecamp title matches more than one Everhour task and the Basecamp todo id cannot resolve one task, stop and report the ambiguity.
73
- - If an estimate array length does not match the active todo count, stop before any updates.
74
- - If the provided todo URL is already completed, stop without updating anything.
75
- - Do not update Basecamp titles before Everhour updates complete.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: 'Everhour Estimates'
3
- short_description: 'Bulk sync Everhour estimates from Basecamp todos.'
4
- default_prompt: 'Use $everhour-basecamp-estimates to update Everhour task estimates from a Basecamp todo or todolist URL.'