account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
ConnectWise PSA schedule entries through Conduit: booking a member's time against a service ticket, project ticket or activity (cw_create_schedule_entry), finding and moving bookings (cw_search_schedule_entries, cw_update_schedule_entry), schedule types and statuses, UTC date
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill scheduling --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill scheduling -a windsurf -y
name: "ConnectWise PSA Scheduling" description: > ConnectWise PSA schedule entries through Conduit: booking a member's time against a service ticket, project ticket or activity (cw_create_schedule_entry), finding and moving bookings (cw_search_schedule_entries, cw_update_schedule_entry), schedule types and statuses, UTC date handling, and the difference between a booking and a time entry. when_to_use: >- When booking, moving or reviewing technician time on the ConnectWise PSA schedule (dispatch). Use when: schedule a tech, book an engineer, dispatch, schedule entry, calendar connectwise, who is booked tomorrow, reschedule appointment, or on-site visit connectwise.
A schedule entry is a **forward booking** of a member's time against a service ticket, project ticket or sales activity. It is not a record of work done: that is a time entry (`connectwise-psa-time-entries`). Dispatchers create entries; technicians later log time against the same ticket.
| Tool | Tier | Purpose | |------|------|---------| | `cw_list_schedule_types` | read | Type IDs; use the `S` (Service) type for a service ticket | | `cw_list_schedule_statuses` | read | Status IDs such as Tentative or Firm | | `cw_search_schedule_entries` | read | Bookings, by `conditions` such as `member/id = 147 and dateStart >= [2026-09-22T00:00:00Z]` | | `cw_search_members` / `cw_get_member` | read | Resolve the technician's member ID | | `cw_create_schedule_entry` | write | Book time: `objectId`, `typeId`, `memberId`, `dateStart`, `dateEnd` required | | `cw_update_schedule_entry` | write | Move, re-assign, firm up or mark done |
1. `cw_get_ticket` to confirm the ticket and its company. 2. Resolve the member with `cw_search_members`. The member is **never** defaulted; confirm who is being booked. 3. `cw_list_schedule_types` (Service type for a service ticket) and, if the user named one, `cw_list_schedule_statuses`. 4. Check the member's existing bookings for the window with `cw_search_schedule_entries`. 5. Convert the requested local time to UTC, then `cw_create_schedule_entry` with `objectId` (the ticket ID), `typeId`, `memberId`, `dateStart`, `dateEnd`, and optional `statusId`, `whereId` (On-Site, Remote, ...), `name`. 6. If the booking is refused as a conflict, show the overlapping entry and let the user pick another time, or explicitly approve a double booking; only then retry with `allowScheduleConflictsFlag: true`.
Work out tomorrow's start and end in the user's time zone and convert both to UTC. Then `cw_search_schedule_entries` with `conditions: "dateStart < [<end UTC>] and dateEnd > [<start UTC>]"`, so bookings that start today and run into tomorrow are included, ordered by `dateStart asc`, then group by member.
Find the entry with `cw_search_schedule_entries`, confirm the new time, and `cw_update_schedule_entry` with the new `dateStart`/`dateEnd`.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user,…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.