From 1127ea1abdf70c1e3a303c2bd5346a06e5486243 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 28 May 2026 14:31:57 -0700 Subject: [PATCH] syncro skill: require [TEST] prefix on all test article subjects Any ticket, estimate, appointment, or schedule created for testing or API research must have its subject/name prefixed with [TEST]. Added as a Hard Rule and cross-referenced in the recurring schedules section. Co-Authored-By: Claude Sonnet 4.6 --- .claude/commands/syncro.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.claude/commands/syncro.md b/.claude/commands/syncro.md index 722a99a..aa115fe 100644 --- a/.claude/commands/syncro.md +++ b/.claude/commands/syncro.md @@ -55,6 +55,8 @@ Create, update, close, comment on, and bill tickets in Syncro PSA. **`DELETE /schedules/{id}` destroys the recurring invoice template immediately — no confirmation, no undo.** Past generated invoices are unaffected but future billing stops. The schedule must be recreated manually with all line items if deleted accidentally. NEVER run destructive HTTP method probes against a live customer schedule — use ACG internal account (customer_id 15353550) for any testing. Incident: Russo Law Firm schedule 224454 deleted during API research 2026-05-26; recreated as 509659. +**Test articles — always prefix the subject/name with `[TEST]`.** Any ticket, estimate, appointment, or schedule created for testing or API research MUST have its subject or name prefixed with `[TEST]` (e.g. `[TEST] Schedule API research`, `[TEST] Estimate - hardware pricing`). This applies regardless of which customer account is used (including the ACG internal test account, customer_id 15353550). Test records must be instantly distinguishable from real customer work at a glance. If a test article was created without the prefix, PUT the subject to add it before continuing. + **Appointment dates — always verify day-of-week before the preview.** Day-of-week math is easy to get wrong. Before including any appointment date in a preview, run a live check and display the full day name alongside the date (e.g. "Saturday 2026-05-23", never just "2026-05-23"). The user confirms the day name at the preview step — if the name is wrong, the date is wrong. Incident: #32312 booked Sunday May 24 instead of Saturday May 23 (2026-05-21). Reported by Winter. ```bash @@ -721,7 +723,7 @@ POST `/invoices` pulls all current line items from the ticket into the invoice a Recurring invoice templates are at `/schedules` — **not** `/recurring_invoices` (404). Generated invoices carry a `schedule_id` field linking back to the template. The `recurring_invoice_id` field on invoices is always null; ignore it. -**Hard rule: never run HTTP method probes against a live customer schedule. Always use an ACG internal test schedule (customer_id 15353550) for destructive-method testing. `DELETE /schedules/{id}` has no confirmation and destroys the template immediately — past generated invoices are unaffected but future billing stops.** +**Hard rule: never run HTTP method probes against a live customer schedule. Always use an ACG internal test schedule (customer_id 15353550) for destructive-method testing. `DELETE /schedules/{id}` has no confirmation and destroys the template immediately — past generated invoices are unaffected but future billing stops.** Any test schedule (or ticket/estimate/appointment) created must have its subject/name prefixed with `[TEST]` — see Hard Rules above. Valid `frequency` values (verified): `Monthly`, `Quarterly`, `Annually`, `Weekly`, `Biweekly`. All other strings return `{"error": ["Frequency must be a valid selection"]}`.