account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Composes Agreement Reconciliation and Margin Analysis into per-client talking points for an upcoming renewal or a price-increase conversation. Grounds every point in returned contracts, invoices, hours, and marketplace data, and produces a partial brief when a source is missing
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill renewal-and-price-increase-prep -a windsurf -y
name: "Renewal and Price-Increase Prep" description: > Composes Agreement Reconciliation and Margin Analysis into per-client talking points for an upcoming renewal or a price-increase conversation. Grounds every point in returned contracts, invoices, hours, and marketplace data, and produces a partial brief when a source is missing rather than inventing rates or amounts. when_to_use: >- When preparing to talk with a client about renewal or a price increase, and you need talking points built from agreement and margin evidence rather than a new reconciliation from scratch. Use when: renewal talking points, price-increase prep, renewal conversation brief, prepare a price increase discussion, what to say at renewal, margin-backed renewal talking points.
Agreement Reconciliation already compares PSA entitlements to invoices. Margin Analysis already turns revenue, marketplace cost, and labor into per-client margin. This companion skill composes those two reads into a short, per-client brief for a renewal or price-increase conversation.
Do not duplicate those skills' workflows. Follow them (or reuse their fresh output) to gather evidence, then write talking points. Never invent a rate, an increase percentage, or a dollar figure. If a number is not returned, omit it and say which source was missing.
[Agreement Reconciliation](../agreement-reconciliation/SKILL.md).
[Margin Analysis](../margin-analysis/SKILL.md).
[License True-Up](../license-true-up/SKILL.md).
`renewal-calendar-builder` agent, or the `/finance-pack:renewals` command, then come back here for talking points on a chosen client.
This skill uses the same systems as the two source skills. At least one side of the agreement picture (a PSA contract or agreement tool, or an accounting invoice tool) is required. Margin inputs (marketplace cost, time entries, a loaded labor rate supplied by the operator) are optional and must be labeled when missing.
Call `conduit__search_tools` first. Use the exact names discovery returns. Gateway names often look like `<vendor-slug>__<tool_name>`. Pax8's hosted surface uses hyphenated names such as `pax8-list-subscriptions`.
Only call read-only list, get, or search tools from the allow-list below. Never create, update, send, void, or raw/execute.
**Client roster:** `autotask_search_companies`, `cw_search_companies`, `cw_get_company`, `halopsa_clients_list`, `halopsa_clients_get`, `halopsa_clients_search`, `syncro_customers_list`, `qbo_customers_list`, `qbo_customers_get`, `qbo_customers_search`, `xero_contacts_list`, `xero_contacts_get`, `xero_contacts_search`, `pax8-list-companies`.
**Agreements and contracts:** `autotask_list_expiring_contracts`, `autotask_search_contracts`, `autotask_get_contract`, `autotask_search_contract_services`, `autotask_search_contract_service_units`, `autotask_search_contract_service_bundles`, `autotask_search_contract_service_bundle_units`, `cw_search_agreements`, `cw_get_agreement`, `cw_get_agreement_additions`. For a renewal window in Autotask, `autotask_list_expiring_contracts` returns contracts whose end date falls within `daysAhead` days (default 60), optionally scoped to one `companyID`. Pass `includeExpired: true` to also catch contracts already past their end date, and if a full page comes back the list may be incomplete:
{ "tool": "autotask_list_expiring_contracts", "arguments": { "companyID": 12345, "daysAhead": 90 } }`autotask_search_contracts` also accepts `endDateFrom` and `endDateTo` (ISO dates). `autotask_get_contract` returns header fields only, with no service lines. Read the lines with `autotask_search_contract_services` and `autotask_search_contract_service_bundles`, and the billed quantities with the two `*_units` tools, counting bundle units alongside service units. The `*_units` tools return rows active on one `activeOn` day (default today), so never rely on the default for a past invoice. Query both tools at the start and end of the invoice period being reconciled, and on further dates if the period is long. Matching endpoint quantities do not rule out a change between them. If the period coverage or billing treatment cannot be established, mark the reconciliation incomplete instead of reporting a discrepancy. HaloPSA MCP has no contract or agreement list tool, and Syncro MCP has no contract list tool: when those are the only PSA, say the contract side is unavailable.
**Invoices and billing:** `autotask_search_invoices`, `autotask_get_invoice_details`, `autotask_search_billing_items`, `autotask_get_billing_item`, `cw_search_invoices`, `cw_get_invoice`, `halopsa_invoices_list`, `halopsa_invoices_get`, `syncro_invoices_list`, `qbo_invoices_list`, `qbo_invoices_get`, `xero_invoices_list`, `xero_invoices_get`. You may use `xero_reports_aged_receivables` or `qbo_reports_customer_balance` as supporting collections context, not as a substitute for line-level reconciliation.
**Marketplace (optional cost and subscription context):** `pax8-list-subscriptions`, `pax8-get-subscription-by-uuid`, `pax8-list-invoices`, `pax8-get-invoice-by-uuid`, `sherweb_subscriptions_list`, `sherweb_subscriptions_get`. Only call these when discovery shows they are callable. Never call `pax8_orders_create`, `pax8_subscriptions_update`, or `sherweb_subscriptions_change_quantity` (the first two are not served on the hosted Pax8 path anyway).
**Labor (optional):** `autotask_search_time_entries`, `cw_search_time_entries`, `cw_get_time_entry`. If the operator does not supply a loaded labor rate, say labor cost could not be estimated.
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.