This skill teaches you how to create effective API monitors with Griffin: scheduled checks that run HTTP requests against endpoints and assert on responses. Monitors are defined in TypeScript using @griffin-app/griffin and live in griffin directories. The goal is to add monitors that provide value—catching real failures and reflecting real business behavior—not just "200 OK" checks.
Prioritize user-facing or critical path (login, checkout, core reads/writes), dependencies other services rely on, and contract endpoints (public/partner APIs). Assert on behavior, not only status: status plus key body fields, headers, and (when relevant) latency. Match business logic (e.g. list shape data.items[] with id, name). Use high frequency (e.g. 1 min) for critical health/auth, lower (5–15 min) elsewhere.
To design assertions, infer response shape from route handlers, response types / DTOs / OpenAPI, and error handling. Assert required fields, contract structure (e.g. pagination items + total), and for latency-sensitive endpoints use Assert(state["node"].latency).lessThan(ms).