.claude/skills/ridendine-monitoring/SKILL.md
Master monitoring and observability for RidenDine production systems. Use when: (1) setting up monitoring dashboards, (2) configuring alerts, (3) debugging performance issues, (4) tracking errors, (5) analyzing user behavior. Key insight: Supabase built-in monitoring for database and Edge Functions, Vercel Analytics for web apps, Sentry for error tracking.
npx skillsauth add Ritenoob/ridedine ridendine-monitoringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
RidenDine runs on Supabase (database + Edge Functions), Vercel (web + admin), and EAS (mobile). Each platform provides monitoring tools. Centralized error tracking via Sentry, performance monitoring via Vercel Analytics.
Use this skill when:
Database Performance:
Dashboard → Database → Query Performance
Monitor:
Edge Functions:
Dashboard → Edge Functions → Logs
Monitor:
Alerts:
Dashboard → Settings → Alerts
Configure:
Setup:
cd apps/web
pnpm add @vercel/analytics
// apps/web/app/layout.tsx
import { Analytics } from '@vercel/analytics/react';
export default function RootLayout({ children }) {
return (
<html>
<body>
{children}
<Analytics />
</body>
</html>
);
}
Monitor:
Setup:
pnpm add @sentry/nextjs @sentry/react-native -w
Web/Admin (sentry.server.config.ts):
import * as Sentry from '@sentry/nextjs';
Sentry.init({
dsn: process.env.SENTRY_DSN,
environment: process.env.NODE_ENV,
tracesSampleRate: 0.1,
beforeSend(event, hint) {
// Filter out known errors
if (event.exception?.values?.[0]?.type === 'AbortError') {
return null;
}
return event;
},
});
Mobile (app/_layout.tsx):
import * as Sentry from '@sentry/react-native';
Sentry.init({
dsn: process.env.EXPO_PUBLIC_SENTRY_DSN,
enableInExpoDevelopment: false,
});
Supabase Edge Function:
console.log('[INFO]', 'Order created', { orderId, customerId });
console.error('[ERROR]', 'Payment failed', { error, orderId });
Next.js Server Action:
import { logger } from '@/lib/logger';
export async function createOrder() {
try {
// ...
logger.info('Order created', { orderId });
} catch (error) {
logger.error('Order creation failed', { error });
Sentry.captureException(error);
}
}
Database Query Analysis:
-- Slow query log
SELECT * FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
-- Index usage
SELECT
schemaname,
tablename,
indexname,
idx_scan
FROM pg_stat_user_indexes
ORDER BY idx_scan ASC;
Next.js Performance:
export const dynamic = 'force-dynamic';
export const revalidate = 60; // Cache for 60s
export async function GET() {
const start = Date.now();
// ... fetch data
const duration = Date.now() - start;
console.log(`[PERF] Request took ${duration}ms`);
}
External Services:
Monitor Endpoints:
https://ridendine.comhttps://admin.ridendine.comhttps://ridendine.com/api/healthBusiness Metrics:
Technical Metrics:
Alert Thresholds:
development
Integrate Coinbase crypto payments into payment systems. Use when: (1) adding crypto payment support, (2) building onchain features, (3) implementing wallet functionality. Covers Coinbase Commerce (payment processor) vs CDP (developer platform), Server Wallets, Embedded Wallets, and multi-network support.
development
Add Apple Pay and Google Pay to Stripe checkout. Use when: (1) adding mobile wallet payments, (2) improving mobile conversion, (3) implementing one-tap checkout. Stripe Payment Request Button automatically detects device capabilities and shows Apple Pay (Safari/iOS) or Google Pay (Chrome/Android).
development
Master Vercel deployment for RidenDine web and admin Next.js apps. Use when: (1) deploying to production, (2) configuring environment variables, (3) setting up preview deployments, (4) debugging build failures, (5) configuring domains, (6) seeing "No Next.js version detected" error in Vercel builds, (7) setting up monorepo with separate projects on free tier. Key insight: Vercel monorepos require Root Directory configuration via dashboard (not vercel.json), GitHub integration auto-detects monorepo structure, free tier allows multiple projects.
development
Master Supabase Row Level Security (RLS) for RidenDine. Use when: (1) adding new tables, (2) modifying RLS policies, (3) debugging access control issues, (4) role-based data access. Key insight: All tables use RLS with role-based policies from profiles.role column.