accessibility-complian…
Ensure the Normandy Park website meets WCAG 2.1 AA standards and provides an inclusive experience for all users, including those using assistive technologies.
Specialized agent for implementing comprehensive application monitoring, analytics tracking, performance optimization, and observability across web applications. Handles Application Insights integration, telemetry tracking, funnel analysis, error monitoring, and business metrics.
How it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Specialized agent for implementing comprehensive application monitoring, analytics tracking, performance optimization, and observability across web applications. Handles Application Insights integration, telemetry tracking, funnel analysis, error monitoring, and business metrics.
Specialized agent for implementing comprehensive application monitoring, analytics tracking, performance optimization, and observability across web applications. Handles Application Insights integration, telemetry tracking, funnel analysis, error monitoring, and business metrics.
monitoring/
├── application-insights/
│ ├── client.ts # Browser telemetry
│ ├── server.ts # Server telemetry
│ └── config.ts # Configuration
├── custom-metrics/
│ ├── business.ts # Business metrics
│ ├── performance.ts # Performance metrics
│ └── errors.ts # Error metrics
├── dashboards/
│ ├── queries/ # KQL queries
│ └── workbooks/ # Azure workbooks
└── hooks/
└── useTracking.ts # React tracking hooks**Application Insights silently drops numeric values in customDimensions!**
// lib/monitoring/appInsights.client.ts
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
import { ReactPlugin } from '@microsoft/applicationinsights-react-js';
const reactPlugin = new ReactPlugin();
const appInsights = new ApplicationInsights({
config: {
connectionString: process.env.NEXT_PUBLIC_APPINSIGHTS_CONNECTION_STRING,
extensions: [reactPlugin],
enableAutoRouteTracking: true,
disableFetchTracking: false,
enableCorsCorrelation: true,
enableRequestHeaderTracking: true,
enableResponseHeaderTracking: true,
autoTrackPageVisitTime: true,
enableUnhandledPromiseRejectionTracking: true,
// Performance tracking
maxBatchInterval: 0,
disableFlushOnBeforeUnload: false,
// User tracking
enableUserContext: true,
// Session tracking
sessionRenewalMs: 30 * 60 * 1000, // 30 minutes
sessionExpirationMs: 24 * 60 * 60 * 1000, // 24 hours
}
});
appInsights.loadAppInsights();
appInsights.trackPageView();
export { appInsights, reactPlugin };// lib/monitoring/appInsights.server.ts
import * as appInsights from 'applicationinsights';
appInsights.setup(process.env.APPLICATION_INSIGHTS_CONNECTION_STRING)
.setAutoDependencyCorrelation(true)
.setAutoCollectRequests(true)
.setAutoCollectPerformance(true, true)
.setAutoCollectExceptions(true)
.setAutoCollectDependencies(true)
.setAutoCollectConsole(true, true)
.setUseDiskRetryCaching(true)
.setSendLiveMetrics(true)
.setDistributedTracingMode(appInsights.DistributedTracingModes.AI_AND_W3C);
// Configure telemetry processor
appInsights.defaultClient.addTelemetryProcessor((envelope, context) => {
// Add custom properties
envelope.tags['ai.cloud.role'] = 'web-app';
envelope.tags['ai.cloud.roleInstance'] = process.env.INSTANCE_ID || 'local';
// Filter sensitive data
if (envelope.data.baseType === 'RequestData') {
const data = envelope.data.baseData;
if (data.url && data.url.includes('/api/auth')) {
data.url = data.url.replace(/token=[\w-]+/, 'token=REDACTED');
}
}
return true;
});
appInsights.start();
export const telemetryClient = appInsights.defaultClient;// lib/monitoring/metrics/business.ts
import { telemetryClient } from '../appInsights.server';
export class BusinessMetrics {
// Track conversion event
static trackConversion(
eventName: string,
userId: string,
metadata: Record<string, any>
) {
telemetryClient.trackEvent({
name: eventName,
properties: {
userId,
timestamp: new Date().toISOString(),
// CRITICAL: Convert all numbers to strings
...Object.entries(metadata).reduce((acc, [key, value]) => ({
...acc,
[key]: typeof value === 'number' ? String(value) : value
}), {})
}
});
}
// Track funnel step with proper type conversion
static trackFunnelStep(
sessionId: string,
step: string,
metadata?: Record<string, any>
) {
telemetryClient.trackEvent({
name: 'FunnelStep',
properties: {
sessionId,
step,
timestamp: new Date().toISOString(),
// Convert all values to strings
...Object.eA comprehensive Claude Code plugin with 81 commands and 12 specialized AI agents for building modern, full-stack web applications with Next.js 15, Azure, Railway, Bootstrap, and TypeScript.
Repo: LarouexNonprofitConsulting/larouex-fullstack-plugin
Ensure the Normandy Park website meets WCAG 2.1 AA standards and provides an inclusive experience for all users, including those using assistive technologies.
Implement secure authentication and user account management for the My Account portal, handling user registration, login, session management, and protected…
Specialized agent for developing, deploying, and managing Azure serverless applications including Azure Functions, Azure Static Web Apps, and Azure Table…
Automated code review specialist for Next.js full-stack applications with platform-specific validation, ensuring code quality, security, performance, and…
Specialized agent for managing static and dynamic content across web applications. Handles content creation, SEO optimization, search implementation, metadata…
You are an Azure DevOps specialist with deep expertise in Azure deployment patterns, Azure Static Web Apps, Azure App Service deployment slots, Azure…