turbo-repo/skills/miot-calendar/SKILL.md
Query and manage ModularIoT Calendar services via the miot CLI. List calendars, check slot availability, create bookings, manage time windows, and run slot managers. Use when the user asks about schedules, appointments, bookings, availability, calendar configuration, time slots, capacity, or calendar services in their ModularIoT organization.
npx skillsauth add microboxlabs/modulariot miot-calendarInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The miot CLI must be available. Run commands via:
npx @microboxlabs/miot-cli <command> (no install needed), ormiot <command> (if globally installed)Configuration requires one of:
--base-url and --token flags on every callMIOT_BASE_URL and MIOT_TOKEN environment variables~/.miotrc.json profile (selected via --profile <name>)Always add --output json to CLI calls and parse the JSON result.
Organization
└── Groups ← organize calendars by category
└── Calendars ← represent a bookable resource (room, vehicle, service)
├── Time Windows ← define when slots are available (hours, days, capacity)
├── Slots ← generated from time windows; bookable time units
│ └── status: OPEN | CLOSED
├── Bookings ← consume a slot, linked to a resource (vehicle, room…)
└── Slot Managers ← automate slot generation on a rolling basis
Key relationships:
capacity and currentOccupancy; availableCapacity = capacity - currentOccupancy.parallelism (default: 1) — the number of parallel resources that can use a slot simultaneously (e.g. multiple loading docks).miot calendar list --output jsonmiot calendar slots list --calendar <id> --from <monday> --to <friday> --available --output json
miot calendar bookings create --calendar <id> --resource-id <rid> --date <date> --hour <h> --minutes <m> --output json
miot calendar slots list --calendar <id> --from <start> --to <end> --output json
miot calendar slots generate --calendar <id> --from <today> --to <today+14> --output json
miot calendar bookings by-resource <resourceId> --output json
miot calendar slot-managers run --output json
Run a specific one: miot calendar slot-managers run <managerId> --output json
⚠️ This is irreversible. All slots, bookings, time windows, and the slot manager are deleted.
miot calendar purge <id> --output json
Pass --no-auto-slot-manager to skip automatic SlotManager provisioning:
miot calendar create --code <code> --name <name> --no-auto-slot-manager --output json
The response will have hasSlotManager: false. A SlotManager can be added later via miot calendar slot-managers create.
miot calendar get <id> --output jsonmiot calendar time-windows list --calendar <id> --output jsonCLI errors return { "error": { "statusCode": N, "message": "..." } }. Common codes:
| Code | Meaning | |------|---------| | 400 | Invalid parameters (date range > 90 days, invalid hours, etc.) | | 404 | Resource not found | | 409 | Slot full / no capacity remaining |
Explain the error in plain language to the user.
startHour < endHour, both 0–23."1,2,3,4,5" where 1 = Monday, 7 = Sunday.OPEN or CLOSED.availableCapacity > 0.calendar purge is irreversible — deletes the calendar and all its slots, bookings, time windows, and slot manager. Always confirm with the user before running.hasSlotManager on a calendar response indicates whether a SlotManager is provisioned. Use --no-auto-slot-manager on calendar create to suppress auto-provisioning.parallelism (default: 1) controls how many parallel resources can use a slot. Set via --parallelism <n> on calendar create or calendar update.For the complete list of commands, flags, and JSON output shapes, read references/reference.md.
tools
Propagate OpenAPI spec changes through all three layers: (1) the hand-authored TypeScript client package — types, resource methods, tests, version bump; (2) the CLI package — commands, flags, table columns, tests, version bump; (3) the agent skill — SKILL.md workflows, business rules, and reference.md sections. Use when the user says the openapi.json has changed and needs to be reflected end-to-end. Triggers on phrases like "update the client from the new openapi", "sync the client with the API spec", "implement the api changes in the client", "the openapi.json changed, update the client package", "propagate the API changes", or "update all layers from the spec".
tools
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
tools
Tag and release a monorepo package following the project's scoped-tag convention. Use when the user wants to publish a new version of a package, create a release tag, or bump a package version.
development
Reviews the current pull request against SonarCloud and fixes reported issues. Fetches PR issues with rule documentation, then applies code changes per rule guidance. Use when the user asks to review the PR, fix SonarCloud issues, or address SonarCloud findings.