MSP Operations Kit: Guided Setup
This skill turns the kit from a template into the user's own operating system. It interviews the user for their facts, writes those facts into the skill files, and tracks progress so setup can happen across multiple sessions. Nothing in the kit should go client-facing until this skill's final check passes.
Before anything: work in the source folder, and back it up
Installed skills are read-only. Setup must run against the user's downloaded kit folder (the one
containing skills/), editing the source files there. Confirm the kit folder location with the
user before making any edit. If they only have installed copies and no source folder, stop and
help them get the kit files into a working folder first.
Before Phase 1 touches anything, make a backup copy of the whole kit folder (or commit it to git if the user uses git). Phase 1 bulk-edits over twenty files; the backup is the undo button.
At the end of every phase, remind the user to reinstall the plugin or re-upload the changed skills so the installed copies match the source folder.
The canonical token list
These are all twelve placeholder tokens used across the kit. This list is the single source of truth for what to collect and propagate:
{{COMPANY_NAME}}, {{COMPANY_LEGAL_NAME}}, {{TAGLINE}}, {{DOMAIN}}, {{INFO_EMAIL}}, {{SUPPORT_EMAIL}}, {{SUPPORT_ALIAS_EMAIL}}, {{PHONE}}, {{STATE}}, {{SERVICE_AREA}}, {{OWNER_NAME}}, {{TIMEZONE}}
Note: {{SUPPORT_EMAIL}}, {{SUPPORT_ALIAS_EMAIL}}, {{OWNER_NAME}}, and {{TIMEZONE}} do not appear in msp-brand itself; they live in the operational skills. Collect them in Phase 1 anyway.
Hard rule for every search and replace in this process: exclude msp-setup/SKILL.md (this
file). It intentionally contains token names and check phrases as instructions; editing it or
counting it in searches breaks the process.
Progress tracking
Keep a SETUP-STATE.md in the kit root. Create it on first run:
# Setup State
- [ ] Phase 0: Backup made
- [ ] Phase 1: Identity (msp-brand and tokens)
- [ ] Phase 2: Pricing cost model (msp-pricing, all five files plus script)
- [ ] Phase 3: Setup Decisions sweep (all other skills)
- [ ] Phase 4: Attorney review (msp-legal, external)
- [ ] Phase 5: Readiness check
On every run, read it first and resume at the first unchecked phase. Record every decision and every deferral in it as you go. Mark a phase done only when its exit condition is met. One phase per sitting is fine; never rush the user.
Rules for the whole process
- Ask for facts; never invent them. If the user does not know a value yet, leave the placeholder or example default in place and log it in SETUP-STATE.md as a deferral with the date.
- Show the shipped example default with every question so the user can accept or override it. Accepting a default is a valid answer; record that it was reviewed.
- Numeric sanity rule: whenever the user supplies a rate, minimum, fee, or price, compute its gross margin against their own loaded costs (from Phase 2, or ask for costs first if pricing has not run yet) before writing it in. Challenge anything below their stated margin floor, with the arithmetic shown. Never silently record a number that loses the user money by their own model.
- Make the edits for the user. Do not hand them a list of find-and-replace chores.
- No em dashes in anything written into the kit.
Phase 1: Identity
Interview for the brand facts, then write them in.
- Ask for values for all twelve tokens: company name and legal name, tagline (offer to help write one), domain, general email, support email and any alias, phone, state or jurisdiction, service area, owner name, and timezone (ask for the client-facing form they use, like "Central Time").
- Fill in
msp-brand/SKILL.mdcompletely: the fill-in tables (colors, fonts, logos; help the user choose if they have no brand yet), voice examples, and the target-client description. Delete example rows once real values exist; if a section is deferred, keep its example rows and mark them "deferred [date]" so the readiness check can tell a logged deferral from an untouched template. - Propagate: replace every occurrence of each token across all of
skills/except this file. Find them by searching for the double-brace pattern. Two traps:msp-pricing/scripts/price_quote.pytakes its company name from theCOMPANY_NAMEconstant near the top of the file; set it there and confirm no other token remains in the script.- {{SERVICE_AREA}} appears in different grammatical frames ("serving businesses ..." versus "in ..."). After replacing, read each affected sentence and fix the grammar.
- Ask the user to drop logo files into
msp-brand/and record the filenames in the logo table (or log as a deferral).
Exit condition: a search for the double-brace pattern across skills/ (excluding this file)
returns only tokens the user explicitly deferred, and those are listed in SETUP-STATE.md.
Phase 2: Pricing cost model
The shipped rates are one MSP's numbers in one market. Rebuild all five pricing files plus the script; msp-pricing is deliberately not part of the Phase 3 sweep because it needs this deeper treatment.
- Work through msp-pricing's full Setup Decisions list, covering every file: labor wages and
burden (
references/labor-rates.md), margin targets and cost model (references/cost-model.md), the break-fix rate card (references/break-fix-rates.md), support-hour assumptions (references/support-hours.md), and the engagement minimum, term ladder, escalator, license markup, and after-hours multipliers (SKILL.md). Apply the numeric sanity rule to every number the user supplies. - Write the user's values in, then update the constants in
scripts/price_quote.pyto match. - In
labor-rates.md, replace or clearly annotate the source MSP's wage-research citations; the user must not ship another shop's research presented as their own market data. - Regenerate derived content from the script instead of hand-editing it: run
price_quote.pyand rebuildcost-model.md's worked example and any margin tables from its output. - Consistency pass: confirm the script constants, cost-model catalog, break-fix card, and SKILL.md prose (including the Setup Decisions bullets that quote example figures) all state the same numbers. Fix any stragglers.
- Review the output with the user: do the floor, anchor, and start numbers look like prices they would actually quote? Check the break-fix card's margin math against their loaded costs explicitly; the script does not price hourly work.
- Flip the "Defaults you must review" note in
msp-pricing/SKILL.mdand in each of the four reference files to "Defaults reviewed and set by [owner name], [date]".
Exit condition: the script runs clean on the user's numbers, the consistency pass finds no disagreements, and all five pricing notes are flipped.
Phase 3: Setup Decisions sweep
Go skill by skill in this order: msp-helpdesk, msp-maintenance, msp-client-comms, msp-onboarding, msp-offboarding, msp-qbr, msp-metrics, msp-sales, msp-marketing, msp-leadgen, msp-website-setup, and last msp-legal (partially; see below).
For each skill, work its Setup Decisions one at a time: state the question, show the shipped
example default, take the user's decision (sanity rule applies to any number), and write it into
the skill body wherever that value appears, not just the Setup Decisions list. Also check the
skill's references/ files: some carry their own Setup Decisions sections (for example
msp-legal/references/playbook-positions.md). When a skill's decisions are all settled, flip its
"Defaults you must review" note to "Defaults reviewed and set by [owner name], [date]".
For msp-legal, settle only the items that are the user's own operating choices (venue county, insurance preferences, which documents they will use). Everything that is a legal position stays open for Phase 4, and msp-legal's note is NOT flipped here; it flips only when the attorney review is done.
Exit condition: every skill's decisions are settled or logged as deferrals, and every note except msp-legal's is flipped.
Phase 4: Attorney review
This one cannot be done inside the kit. The positions in msp-legal and the contract templates in
templates/ are one MSP's negotiated stances, not legal advice. The user takes them to an
attorney licensed in their state before anything governs a real client relationship. Record in
SETUP-STATE.md who they are sending it to and when. When the user confirms the review is done,
flip msp-legal's note and mark the phase.
Phase 5: Readiness check
Run the full check and give a verdict. Every search excludes msp-setup/SKILL.md.
- Search
skills/for the double-brace pattern: zero hits, or only logged deferrals. - Search
skills/for "Defaults you must review": zero unflipped notes remain. - Search msp-legal and the
templates/docx files (extract their text) for square-bracket configuration placeholders that are one-time setup values rather than per-client fill-ins (for example a "[county]" venue): all set or logged as deferrals. Per-client brackets like "[Client legal name]" stay. - msp-brand has no example rows left except ones marked "deferred [date]", and its logo table points at real files or a logged deferral.
- Phase 4 is done, or the user accepts the risk in writing in SETUP-STATE.md.
- Spot-generate one client-facing artifact (for example, a welcome email from msp-onboarding plus a quote from msp-pricing) and have the user confirm it reads as their company, with no visible placeholders.
- Confirm the installed skill copies match the source folder (reinstall now if any phase's changes were never reinstalled).
If everything passes, write "Setup complete, [date]" at the top of SETUP-STATE.md and tell the user the kit is client-facing ready. If not, the remaining items are the punch list; log them in SETUP-STATE.md and pick them up next session.