ckb/.agents/skills/timesheet-checker/references/output-format.md
Michał Kopeć c9336941ac Add timesheet and invoice skills
Add four skills for Tempo/KSeF timesheet and invoice workflows:
- check-my-timesheet: show/log the current user's Tempo time entries
- timesheet-checker: audit timesheet completion across all reporters
- invoice-checker: pull KSeF invoices, check contractors + MF white list
- invoice-prep: summarize Tempo hours per Jira project for invoicing

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:14:52 +02:00

1.5 KiB
Raw Blame History

Output Format

timesheet_data.json (written by preprocess.py)

Machine-readable intermediate file with all fetched and computed data.

{
  "period": {
    "start": "2026-06-16",
    "end": "2026-06-20",
    "label": "last week",
    "working_days": ["2026-06-16", "2026-06-17", "2026-06-18", "2026-06-19", "2026-06-20"],
    "working_day_count": 5
  },
  "summary": {
    "total_employees": 3,
    "total_expected_hours": 120,
    "total_reported_hours": 96.5,
    "overall_completion_pct": 80.4,
    "employees_fully_complete": 1,
    "employees_with_gaps": 2
  },
  "employees": [
    {
      "name": "Jan Kowalski",
      "account_id": "557058:aaaa...",
      "expected_hours": 40,
      "reported_hours": 32.5,
      "missing_hours": 7.5,
      "completion_pct": 81.3
    }
  ]
}

Field notes:

  • employees is sorted by missing_hours descending — the employee furthest behind appears first.
  • completion_pct = reported_hours / expected_hours × 100. Can exceed 100 if overtime was logged.
  • missing_hours = max(0, expected_hours - reported_hours).
  • Working days exclude weekends and Polish public holidays fetched from date.nager.at.

timesheet_report.md (written by postprocess.py)

Manager-readable markdown report containing:

  • Period details (dates, working day count)
  • Summary block: expected total, reported total, overall completion %
  • Employee table ranked by missing hours (most behind first)
  • Completion badges: ✓ complete, ⚠ below 75%, ⚠⚠ below 50%