← TimeTackleCONTENT HISTORY

Update to TimeTackle

Snapshot Oct 24, 2026 · 13:50 UTC · version 1.0.1

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save TimeTackle and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Break down where time went in TimeTackle - hours by tag, project, client, department or any other property for a period, optionally per person or per calendar, including untagged time. Use when the user asks how time was split, what took the most time, or hours per tag or property.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 402
    }
  ],
  "name": "time-breakdown",
  "skill_md_contents": "---\nname: time-breakdown\ndescription: Break down where time went in TimeTackle - hours by tag, project, client, department or any other property for a period, optionally per person or per calendar, including untagged time. Use when the user asks how time was split, what took the most time, or hours per tag or property.\n---\n\n# Time breakdown\n\nAnswer \"where did the time go?\" with hours per tag or property value for a clear date range. Explicit instructions\nfrom the user (period, people, property, format) take priority over these steps.\n\n## Input\n\n- A period. If none is given, use the last full week and say so. Convert relative periods (\"last month\",\n  \"this quarter\") to exact `YYYY-MM-DD` dates.\n- What to break down by: a property the user names (Project, Client, Department, ...) or, if none, the top-level tags.\n- Optionally per person or per calendar, or limited to specific calendars.\n\n## Steps\n\n1. Call `get_account` and read `syncRange`. If the period falls partly or fully outside it, tell the user that data\n   only exists from `syncRange.start` to `syncRange.end` before showing numbers.\n2. Find the property. Call `get_properties` with `search` set to the name the user gave (for example \"Client\").\n   - Note its `key` and `state` (PRIMARY or SECONDARY).\n   - If several properties match, ask which one. If none match, list a few property keys and ask; do not guess.\n   - If the user named no property, skip this step and break down by the top-level tags (step 3, no `tagKey`).\n3. Call `get_meeting_analytics`:\n   - `measures: [\"hours\"]` (add `\"count\"` if the user asks how many meetings or entries).\n   - `groupBy: \"primary_tag\"` for a PRIMARY property, `\"secondary_tag\"` for a SECONDARY one.\n   - `tagKey`: the property's key, to get hours per value. Omit it to get hours per tag; that view includes an\n     \"UNTAGGED\" row for time with no tag.\n   - `splitBy: \"user\"` for per person, or `\"calendar\"` for per calendar.\n   - `dateFrom`, `dateTo`, and `timezone` (the user's stated timezone, otherwise the `timezone` of their own calendar\n     from `get_imported_calendars`; say which one you used).\n   - `calendarIds` only if the user limited the calendars.\n4. If `summary.nextOffset` is not null, call again with `offset` set to it until it is null, and combine the rows.\n5. If the result has a `syncRangeWarning`, repeat it to the user.\n\n## Output\n\n- A table sorted by hours, largest first: value, hours (one decimal), share of the total (%). With `splitBy`, one row\n  per person (or calendar) and value, or a person × value table if it stays readable.\n- The total hours and the exact date range.\n- With `tagKey`, say that time without a value for that property is not included. Without `tagKey`, show UNTAGGED\n  as its own row.\n- Follow the result's `visualization` hint if the user wants a chart.\n\n## Do not\n\n- Do not invent values, people or hours that are not in the tool results, or fill gaps with estimates.\n- Do not describe a person's performance; report hours only.\n- People and calendars are limited to what the user can access in TimeTackle; do not suggest others exist.\n"
}

SHA-256 of public snapshot: 119d11348fda04b5a5412a9a9b081ea08df08520fd4fcd4bb571def6ccec7a9b