---
name: UC Framework services
description: Use to query and act on University of Coimbra "UC One" services through the `uc` CLI — your courses and timetable, bookable spaces, attendance & telework clock-in, notifications, helpdesk tickets (with an AI assistant), and parking (list, permissions, open the barrier). For joining UC meetings, use the "Join UC meetings" skill instead.
version: 1
situations: uc framework, university of coimbra, courses, timetable, schedule, spaces, room booking, attendance, telework, clock in, notifications, helpdesk, support ticket, parking, open barrier
requires-secrets:
requires-packages: "@00/uc-meetings-cli"
---

# UC Framework services

Drive the **`uc`** CLI (from `@00/uc-meetings-cli`) via your shell capability to reach the broader
UC One backend. **Always pass `--json`** — machine-readable output goes to stdout, human lines to
stderr. Pick the environment with `--env production|staging|development` (default `production`).

## 1. Sign in (once)

Same session as the meetings skill — one login covers everything.

- **Headless (preferred for agents):** if the operator stored **`UC_EMAIL`** + **`UC_PASSWORD`** as
  vault secrets, run `uc login --password --json` (no prompt).
- **Interactive (QR):** `uc login --json --out files/uc-login-qr.png`, then call `show_files` on the
  PNG so the operator scans it with the **UC One** app.
- Verify: `uc whoami --json`. Sign out: `uc logout --json`.

If any command reports it's not signed in, run the login above first. A saved session persists at
`~/.config/uc-cli/session.json`.

## 2. Academic — courses & timetable

```bash
uc courses --json                       # enrolled curricular units this year
uc courses --year 2025/2026 --json      # a specific academic year
uc course <unitKey> --json              # a unit sheet: ECTS, area, assessment, syllabus
uc next --json                          # your next scheduled sessions (timetable)
```

## 3. Spaces — bookable rooms

```bash
uc spaces --json                        # search bookable spaces
uc spaces "study" --page 2 --json       # filter by text, paginate
uc space <spaceKey> --json              # one space: capacity, hours, amenities
```

## 4. MyUC — attendance & telework

```bash
uc attendance --json                    # today's attendance records (Europe/Lisbon date)
uc clock in --json                      # telework clock-in
uc clock out --json                     # telework clock-out   (add --overtime to mark overtime)
```

## 5. Notifications

```bash
uc notifications --json                 # your notifications + unread count (alias: uc notifs)
uc notifications --page 2 --json
```

## 6. Helpdesk tickets + AI assistant

```bash
uc tickets --json                       # your support tickets (add --open for open only)
uc ticket <id> --json                   # one ticket
uc ask "how do I reset my UC password?" # ask the UC helpdesk AI (streams the answer)
```

`uc ask` streams the answer as it's generated; with `--json` it collects the SSE events into
`{status,events}` instead.

## 7. Parking

```bash
uc parking --json                       # your parking subscriptions + what you can do on each
uc parking perms <subscriptionKey> --json   # allowed actions for one subscription
uc parking open <subscriptionKey> --json     # open the barrier (physical action — confirm intent first)
```

`uc parking open` triggers a **real barrier** — only run it when the operator clearly asked to open a
specific parking. It uses a stable device id the CLI persists at `~/.config/uc-cli/device.json`.

## Notes

- Parse the `--json` stdout; human-readable summaries go to stderr.
- Errors carry a stable machine key (`__errors__[].key`) surfaced in the `--json` error as `key` — e.g.
  `Unauthorized` (re-login), `Forbidden`, `NotFound`.
- All data is scoped to the signed-in user. These are read/act-on-your-own-account operations; there's
  no bulk or admin surface here.
