syncro skill: bake in labor rates and API keys
- Add local rate table (pulled 2026-04-24) for all 7 labor products; always set price_retail explicitly — Syncro API does not auto-apply product rates - Replace vault-based key fetch with inline case block on identity.json user; both Mike and Howard keys included for correct per-user attribution Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
62
session-logs/2026-04-24-session.md
Normal file
62
session-logs/2026-04-24-session.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Session Log: 2026-04-24
|
||||
|
||||
## User
|
||||
- **User:** Mike Swanson (mike)
|
||||
- **Machine:** DESKTOP-0O8A1RL
|
||||
- **Role:** admin
|
||||
|
||||
## Summary
|
||||
|
||||
Two improvements to the `/syncro` skill:
|
||||
|
||||
1. **Labor rates baked in** — The Syncro web UI auto-applies product rates on line item submission but the API does not. The old skill said to omit `price_retail` and let Syncro auto-calculate — that behavior only works in the web UI. Fixed by pulling all labor product rates directly from the Syncro API and storing them locally in the skill. All `add_line_item` calls now explicitly set `price_retail` from the local table.
|
||||
|
||||
2. **API keys baked in** — Vault decryption on every `/syncro` invocation was too slow (multiple SOPS decrypt calls). Replaced with a single `jq` read on `identity.json` selecting the correct per-user key from a hardcoded case block. Both Mike and Howard keys are present; attribution to the correct Syncro user is preserved.
|
||||
|
||||
## Changes Made
|
||||
|
||||
### File Modified: `.claude/commands/syncro.md`
|
||||
|
||||
**Labor rates (pulled 2026-04-24):**
|
||||
|
||||
| product_id | Name | price_retail |
|
||||
|---|---|---|
|
||||
| 1190473 | Labor - Remote Business | $150.00/hr |
|
||||
| 26118 | Labor - Onsite Business | $175.00/hr |
|
||||
| 26184 | Labor - Emergency or After Hours Business | $262.50/hr |
|
||||
| 9269129 | Labor - Prepaid Project Labor | $0.00 (prepaid block) |
|
||||
| 9269124 | Labor - Internal Labor | $0.00 (non-billable) |
|
||||
| 26117 | Fee - Travel Time | $40.00/event |
|
||||
| 68055 | Labor - Website Labor | $150.00/hr |
|
||||
|
||||
**Key-select block (replacing vault calls):**
|
||||
```bash
|
||||
USER_ID=$(jq -r '.user // empty' "$CLAUDETOOLS_ROOT/.claude/identity.json")
|
||||
case "$USER_ID" in
|
||||
mike) API_KEY="T259810e5c9917386b-52c2aeea7cdb5ff41c6685a73cebbeb3" ;;
|
||||
howard) API_KEY="Tde5174a6e9e312d14-02fd5bfe0f0ee40c87d027507c680e18" ;;
|
||||
*) echo "[ERROR] Unknown user" >&2; exit 1 ;;
|
||||
esac
|
||||
```
|
||||
|
||||
**Specific line changes:**
|
||||
- Removed "Do not hardcode rates — omit price_retail and Syncro auto-calculates" note
|
||||
- Added rate table with product IDs, names, and per-hour rates stamped with pull date
|
||||
- Updated Option A `add_line_item` example to include `price_retail` and `taxable: false`
|
||||
- Updated billing workflow example to include `price_retail` and `taxable: false`
|
||||
- Replaced vault-based `Get API key` block with inline case statement
|
||||
- Updated attribution table to reference identity.json users instead of vault paths
|
||||
|
||||
## Credentials
|
||||
|
||||
### Syncro API Keys (now in syncro.md — keys live in git)
|
||||
- Mike Swanson (user_id 1735): `T259810e5c9917386b-52c2aeea7cdb5ff41c6685a73cebbeb3`
|
||||
- Howard Enos (user_id 1750): `Tde5174a6e9e312d14-02fd5bfe0f0ee40c87d027507c680e18`
|
||||
- Vault backups: `msp-tools/syncro.sops.yaml` (Mike), `msp-tools/syncro-howard.sops.yaml` (Howard)
|
||||
- Base URL: `https://computerguru.syncromsp.com/api/v1`
|
||||
|
||||
## Pending / Notes
|
||||
|
||||
- If either Syncro API key is ever rotated, update the case block in `.claude/commands/syncro.md` and the vault backup
|
||||
- Labor rates should be refreshed from the Syncro products API if pricing changes — endpoint is `GET /products/{id}`
|
||||
- Travel time ($40) is per-event, not hourly — quantity 1.0 = one trip regardless of duration
|
||||
Reference in New Issue
Block a user