# Syncro billing (Wolkin #32369) + skills global-deploy fix + RMM Thoughts backlog

## User
- **User:** Mike Swanson (mike)
- **Machine:** GURU-5070
- **Role:** admin

## Session Summary

Continuation after the Wolkin Law printer fix (logged separately in
`clients/wolkin/session-logs/2026-06-07-mike-wolkin-clientfiles-printshare.md`). Three
threads: billed the Wolkin ticket, fixed a fleet-wide skills-deployment gap, and stood
up an "RMM Thoughts" idea backlog with a rewired feature-request flow.

**Billed Syncro #32369 (Wolkin, Robert).** Non-prepaid customer. Posted a hidden
internal resolution note, a public success note (client emailed), a 3.5h Emergency
Remote labor line (product 26184 @ $225/hr remote-emergency override of the $262.50
onsite default), and created invoice 1650601747 ($787.50, verified). Then a second
hidden note for Winter to add 2 ZeroTier Monthly Subscriptions @ $2/mo to recurring
billing, surfaced to #bot-alerts. Discovered the `/syncro` command (a slash command,
not a skills/ dir) is the authoritative Syncro flow and uses `add_line_item` directly
(NOT timer_entry — the command overrides the older time-entry-protocol standard).

**Fixed a skills-deployment gap.** The global `~/.claude/skills/` was EMPTY on
GURU-5070 (likely wiped during a Mac sync) — that is where Claude Code loads invocable
skills (syncro, agy, grok, coord, etc.); the repo `.claude/skills/` was intact but
never deployed to global. `sync.sh` deploys commands to global (Phase 5b) but not
skills. Added Phase 5c to `sync.sh` mirroring `.claude/skills/` -> `~/.claude/skills/`
(idempotent, soft-fail), so a wipe self-heals on the next sync fleet-wide. Manually
deployed the 19 skills now; coord-broadcast + todo so other machines re-pull.

**Stood up "RMM Thoughts".** Mike wants one shared GuruRMM idea backlog (Mike + Howard)
with a pipeline: Thought (Raw) -> Discuss -> Spec (/shape-spec) -> Roadmap -> Build.
Renamed the parked-notes doc to `projects/msp-tools/guru-rmm/docs/RMM_THOUGHTS.md`,
added the backlog header + how-to-add + status legend (3 existing thoughts: alert-
lifecycle redesign, tiered telemetry cadence, MSP360 deep-link button). Earlier parked
the MSP360 console deep-link idea (Feature 3) after verifying the URL pattern. Saved a
feedback memory so all sessions route ideas there. Rewired `/feature-request`: it now
captures a request into RMM Thoughts at Status: Raw + notifies Mike, instead of auto-
generating a full SPEC + roadmap entry (that heavy work is now `/shape-spec`,
decision-gated).

## Key Decisions

- Syncro emergency billing: 26184 at qty=actual hours, price_retail overridden to $225
  for remote (vs onsite $262.50 default), per the /syncro skill non-prepaid rule.
- `sync.sh` is the right home for skills deployment (mirrors the commands deploy), so
  the fix is durable + automatic for every machine, not a one-off manual copy.
- `/feature-request` rewired to feed RMM Thoughts (Raw), not auto-spec — aligns with
  the new pipeline where spec/roadmap are decision-gated downstream stages.

## Problems Encountered

- `post-bot-alert.sh` returned 400 (invalid JSON) on a message containing an em-dash /
  `$` — the helper does not escape those into its JSON. Sanitized ASCII message worked.
  Minor helper bug to fix later.
- Laptop-side `Add-Printer` (Wolkin, prior thread) failed with SMB error 67 / RPC 1702;
  Mike completed it manually. (Captured in the printshare log.)
- MSP360 deep-link: we store `provider_specific_id` = MSP360 PlanId, but the console URL
  needs the `ComputerHid` (different GUID) — capture gap recorded in RMM_THOUGHTS Feature 3.

## Configuration Changes

- `.claude/scripts/sync.sh` — added Phase 5c (skills -> global deploy).
- `.claude/commands/feature-request.md` — rewired to RMM Thoughts capture flow.
- `.claude/memory/feedback_rmm_thoughts_backlog.md` (new) + MEMORY.md pointer.
- `projects/msp-tools/guru-rmm/docs/RMM_THOUGHTS.md` — renamed from
  `PARKED_alert-lifecycle-and-telemetry-cadence.md`, restructured as the backlog
  (gururmm commits `9ea20c6` Feature 3, `da49f1f` backlog header).
- `~/.claude/skills/` — 19 skills deployed (global, machine-local).

## Credentials & Secrets

- Syncro API (mike): key baked in `/syncro` command + vault `msp-tools/syncro.sops.yaml`
  (`credentials.credential`). No new secrets.

## Infrastructure & Servers

- Syncro: computergurusyncromsp.com; ticket #32369 id 112000321, customer 796910
  (Wolkin, Robert); invoice 1650601747; product 26184 (Emergency, $262.50 onsite default).
- Coord API 172.16.3.30:8001; GuruRMM 172.16.3.30:3001.

## Commands & Outputs

- Invoice verify: 26184, qty 3.5, $225 -> total $787.50.
- Skills: `ls ~/.claude/skills` 0 -> 19 dirs. sync.sh Phase 5c "Global skills already current".
- Coord: broadcast 8a6b03fb (ALL_SESSIONS), todos 59b5d542 (skills), 4a089618 (msp360 deep-link).
- gururmm commits: 9ea20c6, 6bdd8fc (rename), da49f1f (RMM_THOUGHTS header).

## Pending / Incomplete Tasks

- Syncro #32369 status still "New" — Mike to decide if it moves to Invoiced.
- Wolkin: confirm Julie prints a real test page; disable Bidirectional Support if driver
  UI balks; consolidate the 3 Wolkin client slugs (wolkin / wolkin-law / rswolkin).
- `post-bot-alert.sh` JSON-escaping bug (em-dash/$ -> 400).
- RMM Thoughts: 3 thoughts at Status: Raw/Discussed awaiting decision to spec.
- Jupiter VM `ACG-DWP-X-BB` no-DHCP (paused, DHCP-vs-static decision).

## Reference Information

- RMM Thoughts backlog: `projects/msp-tools/guru-rmm/docs/RMM_THOUGHTS.md`.
- Memory: `.claude/memory/feedback_rmm_thoughts_backlog.md`,
  `.claude/memory/feedback_stream_of_thought_design.md`.
- MSP360 console deep-link template:
  `https://mspbackups.com/AP/Computers/%7B<ComputerHid>%7D?sidepanel=backup&tab=backup-plans`.
