@girardmedia/bootspring 1.2.0 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -14
- package/bin/bootspring.js +166 -27
- package/cli/agent.js +189 -17
- package/cli/analyze.js +499 -0
- package/cli/audit.js +557 -0
- package/cli/auth.js +495 -38
- package/cli/billing.js +302 -0
- package/cli/build.js +695 -0
- package/cli/business.js +109 -26
- package/cli/checkpoint-utils.js +168 -0
- package/cli/checkpoint.js +639 -0
- package/cli/cloud-sync.js +447 -0
- package/cli/content.js +198 -0
- package/cli/context.js +1 -1
- package/cli/deploy.js +543 -0
- package/cli/fundraise.js +112 -50
- package/cli/github-cmd.js +435 -0
- package/cli/health.js +477 -0
- package/cli/init.js +84 -13
- package/cli/legal.js +107 -95
- package/cli/log.js +2 -2
- package/cli/loop.js +976 -73
- package/cli/manager.js +711 -0
- package/cli/metrics.js +480 -0
- package/cli/monitor.js +812 -0
- package/cli/onboard.js +521 -0
- package/cli/orchestrator.js +12 -24
- package/cli/prd.js +594 -0
- package/cli/preseed-start.js +1483 -0
- package/cli/preseed.js +2302 -0
- package/cli/project.js +436 -0
- package/cli/quality.js +233 -0
- package/cli/security.js +913 -0
- package/cli/seed.js +1441 -5
- package/cli/skill.js +273 -211
- package/cli/suggest.js +989 -0
- package/cli/switch.js +453 -0
- package/cli/visualize.js +527 -0
- package/cli/watch.js +769 -0
- package/cli/workspace.js +607 -0
- package/core/analyze-workflow.js +1134 -0
- package/core/api-client.js +535 -22
- package/core/audit-workflow.js +1350 -0
- package/core/build-orchestrator.js +480 -0
- package/core/build-state.js +577 -0
- package/core/checkpoint-engine.js +408 -0
- package/core/config.js +1109 -26
- package/core/context-loader.js +21 -1
- package/core/deploy-workflow.js +836 -0
- package/core/entitlements.js +93 -22
- package/core/github-sync.js +610 -0
- package/core/index.js +8 -1
- package/core/ingest.js +1111 -0
- package/core/metrics-engine.js +768 -0
- package/core/onboard-workflow.js +1007 -0
- package/core/preseed-workflow.js +934 -0
- package/core/preseed.js +1617 -0
- package/core/project-context.js +325 -0
- package/core/project-state.js +694 -0
- package/core/r2-sync.js +583 -0
- package/core/scaffold.js +525 -7
- package/core/session.js +258 -0
- package/core/task-extractor.js +758 -0
- package/core/telemetry.js +28 -6
- package/core/tier-enforcement.js +737 -0
- package/core/utils.js +38 -14
- package/generators/questionnaire.js +15 -12
- package/generators/sections/ai.js +7 -7
- package/generators/sections/content.js +300 -0
- package/generators/sections/index.js +3 -0
- package/generators/sections/plugins.js +7 -6
- package/generators/templates/build-planning.template.js +596 -0
- package/generators/templates/content.template.js +819 -0
- package/generators/templates/index.js +2 -1
- package/hooks/git-autopilot.js +1250 -0
- package/hooks/index.js +9 -0
- package/intelligence/agent-collab.js +2057 -0
- package/intelligence/auto-suggest.js +634 -0
- package/intelligence/content-gen.js +1589 -0
- package/intelligence/cross-project.js +1647 -0
- package/intelligence/index.js +184 -0
- package/intelligence/learning/insights.json +517 -7
- package/intelligence/learning/pattern-learner.js +1008 -14
- package/intelligence/memory/decision-tracker.js +1431 -31
- package/intelligence/memory/decisions.jsonl +0 -0
- package/intelligence/orchestrator.js +2896 -1
- package/intelligence/prd.js +92 -1
- package/intelligence/recommendation-weights.json +14 -2
- package/intelligence/recommendations.js +463 -9
- package/intelligence/workflow-composer.js +1451 -0
- package/marketplace/index.d.ts +324 -0
- package/marketplace/index.js +1921 -0
- package/mcp/contracts/mcp-contract.v1.json +342 -4
- package/mcp/registry.js +680 -3
- package/mcp/response-formatter.js +23 -0
- package/mcp/tools/assist-tool.js +78 -4
- package/mcp/tools/autopilot-tool.js +408 -0
- package/mcp/tools/content-tool.js +571 -0
- package/mcp/tools/dashboard-tool.js +251 -5
- package/mcp/tools/mvp-tool.js +344 -0
- package/mcp/tools/plugin-tool.js +23 -1
- package/mcp/tools/prd-tool.js +579 -0
- package/mcp/tools/seed-tool.js +447 -0
- package/mcp/tools/skill-tool.js +43 -14
- package/mcp/tools/suggest-tool.js +147 -0
- package/package.json +15 -6
- package/agents/README.md +0 -93
- package/agents/ai-integration-expert/context.md +0 -386
- package/agents/api-expert/context.md +0 -416
- package/agents/architecture-expert/context.md +0 -454
- package/agents/auth-expert/context.md +0 -399
- package/agents/backend-expert/context.md +0 -483
- package/agents/business-strategy-expert/context.md +0 -180
- package/agents/code-review-expert/context.md +0 -365
- package/agents/competitive-analysis-expert/context.md +0 -239
- package/agents/data-modeling-expert/context.md +0 -352
- package/agents/database-expert/context.md +0 -250
- package/agents/devops-expert/context.md +0 -446
- package/agents/email-expert/context.md +0 -379
- package/agents/financial-expert/context.md +0 -213
- package/agents/frontend-expert/context.md +0 -364
- package/agents/fundraising-expert/context.md +0 -257
- package/agents/growth-expert/context.md +0 -249
- package/agents/index.js +0 -140
- package/agents/investor-relations-expert/context.md +0 -266
- package/agents/legal-expert/context.md +0 -284
- package/agents/marketing-expert/context.md +0 -236
- package/agents/monitoring-expert/context.md +0 -362
- package/agents/operations-expert/context.md +0 -279
- package/agents/partnerships-expert/context.md +0 -286
- package/agents/payment-expert/context.md +0 -340
- package/agents/performance-expert/context.md +0 -377
- package/agents/private-equity-expert/context.md +0 -246
- package/agents/railway-expert/context.md +0 -284
- package/agents/research-expert/context.md +0 -245
- package/agents/sales-expert/context.md +0 -241
- package/agents/security-expert/context.md +0 -343
- package/agents/testing-expert/context.md +0 -414
- package/agents/ui-ux-expert/context.md +0 -448
- package/agents/vercel-expert/context.md +0 -426
- package/skills/index.js +0 -787
- package/skills/patterns/README.md +0 -163
- package/skills/patterns/ai/agents.md +0 -281
- package/skills/patterns/ai/claude.md +0 -138
- package/skills/patterns/ai/embeddings.md +0 -150
- package/skills/patterns/ai/rag.md +0 -266
- package/skills/patterns/ai/streaming.md +0 -170
- package/skills/patterns/ai/structured-output.md +0 -162
- package/skills/patterns/ai/tools.md +0 -154
- package/skills/patterns/analytics/tracking.md +0 -220
- package/skills/patterns/api/errors.md +0 -296
- package/skills/patterns/api/graphql.md +0 -440
- package/skills/patterns/api/middleware.md +0 -279
- package/skills/patterns/api/openapi.md +0 -285
- package/skills/patterns/api/rate-limiting.md +0 -231
- package/skills/patterns/api/route-handler.md +0 -217
- package/skills/patterns/api/server-action.md +0 -249
- package/skills/patterns/api/versioning.md +0 -443
- package/skills/patterns/api/webhooks.md +0 -247
- package/skills/patterns/auth/clerk.md +0 -132
- package/skills/patterns/auth/mfa.md +0 -313
- package/skills/patterns/auth/nextauth.md +0 -140
- package/skills/patterns/auth/oauth.md +0 -237
- package/skills/patterns/auth/rbac.md +0 -152
- package/skills/patterns/auth/session-management.md +0 -367
- package/skills/patterns/auth/session.md +0 -120
- package/skills/patterns/database/audit.md +0 -177
- package/skills/patterns/database/migrations.md +0 -177
- package/skills/patterns/database/pagination.md +0 -230
- package/skills/patterns/database/pooling.md +0 -357
- package/skills/patterns/database/prisma.md +0 -180
- package/skills/patterns/database/relations.md +0 -187
- package/skills/patterns/database/seeding.md +0 -246
- package/skills/patterns/database/soft-delete.md +0 -153
- package/skills/patterns/database/transactions.md +0 -162
- package/skills/patterns/deployment/ci-cd.md +0 -231
- package/skills/patterns/deployment/docker.md +0 -188
- package/skills/patterns/deployment/monitoring.md +0 -387
- package/skills/patterns/deployment/vercel.md +0 -160
- package/skills/patterns/email/resend.md +0 -143
- package/skills/patterns/email/templates.md +0 -245
- package/skills/patterns/email/transactional.md +0 -503
- package/skills/patterns/email/verification.md +0 -176
- package/skills/patterns/files/download.md +0 -243
- package/skills/patterns/files/upload.md +0 -239
- package/skills/patterns/i18n/nextintl.md +0 -188
- package/skills/patterns/logging/structured.md +0 -292
- package/skills/patterns/notifications/email-queue.md +0 -248
- package/skills/patterns/notifications/push.md +0 -279
- package/skills/patterns/payments/checkout.md +0 -303
- package/skills/patterns/payments/invoices.md +0 -287
- package/skills/patterns/payments/portal.md +0 -245
- package/skills/patterns/payments/stripe.md +0 -272
- package/skills/patterns/payments/subscriptions.md +0 -300
- package/skills/patterns/payments/usage.md +0 -279
- package/skills/patterns/performance/caching.md +0 -276
- package/skills/patterns/performance/code-splitting.md +0 -233
- package/skills/patterns/performance/edge.md +0 -254
- package/skills/patterns/performance/isr.md +0 -266
- package/skills/patterns/performance/lazy-loading.md +0 -281
- package/skills/patterns/realtime/sse.md +0 -327
- package/skills/patterns/realtime/websockets.md +0 -336
- package/skills/patterns/search/filtering.md +0 -329
- package/skills/patterns/search/fulltext.md +0 -260
- package/skills/patterns/security/audit-logging.md +0 -444
- package/skills/patterns/security/csrf.md +0 -234
- package/skills/patterns/security/headers.md +0 -252
- package/skills/patterns/security/sanitization.md +0 -258
- package/skills/patterns/security/secrets.md +0 -261
- package/skills/patterns/security/validation.md +0 -268
- package/skills/patterns/security/xss.md +0 -229
- package/skills/patterns/seo/metadata.md +0 -252
- package/skills/patterns/state/context.md +0 -349
- package/skills/patterns/state/react-query.md +0 -313
- package/skills/patterns/state/url-state.md +0 -482
- package/skills/patterns/state/zustand.md +0 -262
- package/skills/patterns/testing/api.md +0 -259
- package/skills/patterns/testing/component.md +0 -233
- package/skills/patterns/testing/coverage.md +0 -207
- package/skills/patterns/testing/fixtures.md +0 -225
- package/skills/patterns/testing/integration.md +0 -436
- package/skills/patterns/testing/mocking.md +0 -177
- package/skills/patterns/testing/playwright.md +0 -162
- package/skills/patterns/testing/snapshot.md +0 -175
- package/skills/patterns/testing/vitest.md +0 -307
- package/skills/patterns/ui/accordions.md +0 -395
- package/skills/patterns/ui/cards.md +0 -299
- package/skills/patterns/ui/dropdowns.md +0 -476
- package/skills/patterns/ui/empty-states.md +0 -320
- package/skills/patterns/ui/forms.md +0 -405
- package/skills/patterns/ui/inputs.md +0 -319
- package/skills/patterns/ui/layouts.md +0 -282
- package/skills/patterns/ui/loading.md +0 -291
- package/skills/patterns/ui/modals.md +0 -338
- package/skills/patterns/ui/navigation.md +0 -374
- package/skills/patterns/ui/tables.md +0 -407
- package/skills/patterns/ui/toasts.md +0 -300
- package/skills/patterns/ui/tooltips.md +0 -396
- package/skills/patterns/utils/dates.md +0 -435
- package/skills/patterns/utils/errors.md +0 -451
- package/skills/patterns/utils/formatting.md +0 -345
- package/skills/patterns/utils/validation.md +0 -434
- package/templates/bootspring.config.js +0 -83
- package/templates/business/business-model-canvas.md +0 -246
- package/templates/business/business-plan.md +0 -266
- package/templates/business/competitive-analysis.md +0 -312
- package/templates/fundraising/data-room-checklist.md +0 -300
- package/templates/fundraising/investor-research.md +0 -243
- package/templates/fundraising/pitch-deck-outline.md +0 -253
- package/templates/legal/gdpr-checklist.md +0 -339
- package/templates/legal/privacy-policy.md +0 -285
- package/templates/legal/terms-of-service.md +0 -222
- package/templates/mcp.json +0 -9
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
# Monitoring Expert Agent
|
|
2
|
-
|
|
3
|
-
## Role
|
|
4
|
-
Specialized in application monitoring, error tracking, logging, alerting, and observability for production systems.
|
|
5
|
-
|
|
6
|
-
## Core Expertise
|
|
7
|
-
|
|
8
|
-
### Observability Pillars
|
|
9
|
-
|
|
10
|
-
```markdown
|
|
11
|
-
## Three Pillars of Observability
|
|
12
|
-
|
|
13
|
-
### 1. Logs
|
|
14
|
-
- Record of discrete events
|
|
15
|
-
- Debug information
|
|
16
|
-
- Audit trail
|
|
17
|
-
|
|
18
|
-
### 2. Metrics
|
|
19
|
-
- Numerical measurements over time
|
|
20
|
-
- Performance indicators
|
|
21
|
-
- Business KPIs
|
|
22
|
-
|
|
23
|
-
### 3. Traces
|
|
24
|
-
- Request flow across services
|
|
25
|
-
- Performance bottlenecks
|
|
26
|
-
- Distributed debugging
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Error Tracking with Sentry
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
// lib/sentry.ts
|
|
33
|
-
import * as Sentry from '@sentry/nextjs';
|
|
34
|
-
|
|
35
|
-
Sentry.init({
|
|
36
|
-
dsn: process.env.SENTRY_DSN,
|
|
37
|
-
environment: process.env.NODE_ENV,
|
|
38
|
-
|
|
39
|
-
// Performance monitoring
|
|
40
|
-
tracesSampleRate: 1.0,
|
|
41
|
-
|
|
42
|
-
// Release tracking
|
|
43
|
-
release: process.env.VERCEL_GIT_COMMIT_SHA,
|
|
44
|
-
|
|
45
|
-
// Filter errors
|
|
46
|
-
beforeSend(event) {
|
|
47
|
-
// Don't send errors in development
|
|
48
|
-
if (process.env.NODE_ENV === 'development') {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
return event;
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
// Ignore specific errors
|
|
55
|
-
ignoreErrors: [
|
|
56
|
-
'ResizeObserver loop',
|
|
57
|
-
'Non-Error promise rejection',
|
|
58
|
-
],
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// Manual error capture
|
|
62
|
-
export function captureError(error: Error, context?: Record<string, any>) {
|
|
63
|
-
Sentry.captureException(error, {
|
|
64
|
-
extra: context,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Set user context
|
|
69
|
-
export function setUser(user: { id: string; email: string }) {
|
|
70
|
-
Sentry.setUser(user);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Add breadcrumb
|
|
74
|
-
export function addBreadcrumb(message: string, data?: Record<string, any>) {
|
|
75
|
-
Sentry.addBreadcrumb({
|
|
76
|
-
message,
|
|
77
|
-
data,
|
|
78
|
-
level: 'info',
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
// Error boundary component
|
|
85
|
-
'use client';
|
|
86
|
-
|
|
87
|
-
import * as Sentry from '@sentry/nextjs';
|
|
88
|
-
import { useEffect } from 'react';
|
|
89
|
-
|
|
90
|
-
export default function GlobalError({
|
|
91
|
-
error,
|
|
92
|
-
reset,
|
|
93
|
-
}: {
|
|
94
|
-
error: Error & { digest?: string };
|
|
95
|
-
reset: () => void;
|
|
96
|
-
}) {
|
|
97
|
-
useEffect(() => {
|
|
98
|
-
Sentry.captureException(error);
|
|
99
|
-
}, [error]);
|
|
100
|
-
|
|
101
|
-
return (
|
|
102
|
-
<html>
|
|
103
|
-
<body>
|
|
104
|
-
<h2>Something went wrong!</h2>
|
|
105
|
-
<button onClick={reset}>Try again</button>
|
|
106
|
-
</body>
|
|
107
|
-
</html>
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Logging Best Practices
|
|
113
|
-
|
|
114
|
-
```typescript
|
|
115
|
-
// lib/logger.ts
|
|
116
|
-
import pino from 'pino';
|
|
117
|
-
|
|
118
|
-
const logger = pino({
|
|
119
|
-
level: process.env.LOG_LEVEL || 'info',
|
|
120
|
-
|
|
121
|
-
// Pretty print in development
|
|
122
|
-
transport: process.env.NODE_ENV === 'development'
|
|
123
|
-
? { target: 'pino-pretty' }
|
|
124
|
-
: undefined,
|
|
125
|
-
|
|
126
|
-
// Structured logging
|
|
127
|
-
formatters: {
|
|
128
|
-
level: (label) => ({ level: label }),
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
// Add context
|
|
132
|
-
base: {
|
|
133
|
-
env: process.env.NODE_ENV,
|
|
134
|
-
version: process.env.npm_package_version,
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// Child loggers with context
|
|
139
|
-
export function createLogger(context: string) {
|
|
140
|
-
return logger.child({ context });
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Usage examples
|
|
144
|
-
const log = createLogger('api');
|
|
145
|
-
|
|
146
|
-
// Log levels
|
|
147
|
-
log.debug({ data }, 'Debug message');
|
|
148
|
-
log.info({ userId }, 'User logged in');
|
|
149
|
-
log.warn({ attempt }, 'Rate limit approaching');
|
|
150
|
-
log.error({ error, stack: error.stack }, 'Request failed');
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
// Request logging middleware
|
|
155
|
-
import { NextRequest, NextResponse } from 'next/server';
|
|
156
|
-
import { createLogger } from '@/lib/logger';
|
|
157
|
-
|
|
158
|
-
const log = createLogger('middleware');
|
|
159
|
-
|
|
160
|
-
export function middleware(request: NextRequest) {
|
|
161
|
-
const start = Date.now();
|
|
162
|
-
|
|
163
|
-
// Log request
|
|
164
|
-
log.info({
|
|
165
|
-
method: request.method,
|
|
166
|
-
path: request.nextUrl.pathname,
|
|
167
|
-
userAgent: request.headers.get('user-agent'),
|
|
168
|
-
}, 'Incoming request');
|
|
169
|
-
|
|
170
|
-
const response = NextResponse.next();
|
|
171
|
-
|
|
172
|
-
// Log response
|
|
173
|
-
response.headers.set('X-Response-Time', `${Date.now() - start}ms`);
|
|
174
|
-
|
|
175
|
-
return response;
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Metrics and Analytics
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
// lib/metrics.ts
|
|
183
|
-
import { PostHog } from 'posthog-node';
|
|
184
|
-
|
|
185
|
-
const posthog = new PostHog(process.env.POSTHOG_API_KEY!, {
|
|
186
|
-
host: process.env.POSTHOG_HOST,
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
// Track events
|
|
190
|
-
export function trackEvent(
|
|
191
|
-
userId: string,
|
|
192
|
-
event: string,
|
|
193
|
-
properties?: Record<string, any>
|
|
194
|
-
) {
|
|
195
|
-
posthog.capture({
|
|
196
|
-
distinctId: userId,
|
|
197
|
-
event,
|
|
198
|
-
properties,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// Track page views
|
|
203
|
-
export function trackPageView(userId: string, path: string) {
|
|
204
|
-
posthog.capture({
|
|
205
|
-
distinctId: userId,
|
|
206
|
-
event: '$pageview',
|
|
207
|
-
properties: { $current_url: path },
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Feature flags
|
|
212
|
-
export async function getFeatureFlag(
|
|
213
|
-
userId: string,
|
|
214
|
-
flag: string
|
|
215
|
-
): Promise<boolean> {
|
|
216
|
-
return posthog.isFeatureEnabled(flag, userId);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Business metrics
|
|
220
|
-
export const metrics = {
|
|
221
|
-
userSignup: (userId: string) =>
|
|
222
|
-
trackEvent(userId, 'user_signup'),
|
|
223
|
-
|
|
224
|
-
subscriptionStarted: (userId: string, plan: string) =>
|
|
225
|
-
trackEvent(userId, 'subscription_started', { plan }),
|
|
226
|
-
|
|
227
|
-
featureUsed: (userId: string, feature: string) =>
|
|
228
|
-
trackEvent(userId, 'feature_used', { feature }),
|
|
229
|
-
};
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### Alerting Configuration
|
|
233
|
-
|
|
234
|
-
```markdown
|
|
235
|
-
## Alert Configuration
|
|
236
|
-
|
|
237
|
-
### Alert Levels
|
|
238
|
-
| Level | Response Time | Examples |
|
|
239
|
-
|-------|---------------|----------|
|
|
240
|
-
| Critical (P1) | Immediate | Service down, data loss |
|
|
241
|
-
| High (P2) | 1 hour | Major degradation |
|
|
242
|
-
| Medium (P3) | 4 hours | Minor issues |
|
|
243
|
-
| Low (P4) | Next day | Non-urgent |
|
|
244
|
-
|
|
245
|
-
### Alert Channels
|
|
246
|
-
- **Critical**: PagerDuty → Phone call
|
|
247
|
-
- **High**: Slack #alerts → Team ping
|
|
248
|
-
- **Medium**: Slack #alerts → No ping
|
|
249
|
-
- **Low**: Email digest
|
|
250
|
-
|
|
251
|
-
### Key Alerts to Configure
|
|
252
|
-
1. Error rate > 1%
|
|
253
|
-
2. P95 latency > 2s
|
|
254
|
-
3. CPU > 80%
|
|
255
|
-
4. Memory > 85%
|
|
256
|
-
5. Disk > 90%
|
|
257
|
-
6. Failed deployments
|
|
258
|
-
7. SSL certificate expiry < 14 days
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### Health Checks
|
|
262
|
-
|
|
263
|
-
```typescript
|
|
264
|
-
// app/api/health/route.ts
|
|
265
|
-
import { prisma } from '@/lib/db';
|
|
266
|
-
import { redis } from '@/lib/redis';
|
|
267
|
-
|
|
268
|
-
interface HealthStatus {
|
|
269
|
-
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
270
|
-
checks: Record<string, CheckResult>;
|
|
271
|
-
timestamp: string;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
interface CheckResult {
|
|
275
|
-
status: 'pass' | 'fail';
|
|
276
|
-
latency?: number;
|
|
277
|
-
message?: string;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
async function checkDatabase(): Promise<CheckResult> {
|
|
281
|
-
const start = Date.now();
|
|
282
|
-
try {
|
|
283
|
-
await prisma.$queryRaw`SELECT 1`;
|
|
284
|
-
return { status: 'pass', latency: Date.now() - start };
|
|
285
|
-
} catch (error) {
|
|
286
|
-
return { status: 'fail', message: error.message };
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
async function checkRedis(): Promise<CheckResult> {
|
|
291
|
-
const start = Date.now();
|
|
292
|
-
try {
|
|
293
|
-
await redis.ping();
|
|
294
|
-
return { status: 'pass', latency: Date.now() - start };
|
|
295
|
-
} catch (error) {
|
|
296
|
-
return { status: 'fail', message: error.message };
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
export async function GET() {
|
|
301
|
-
const checks = {
|
|
302
|
-
database: await checkDatabase(),
|
|
303
|
-
redis: await checkRedis(),
|
|
304
|
-
};
|
|
305
|
-
|
|
306
|
-
const allPassing = Object.values(checks).every(c => c.status === 'pass');
|
|
307
|
-
const allFailing = Object.values(checks).every(c => c.status === 'fail');
|
|
308
|
-
|
|
309
|
-
const health: HealthStatus = {
|
|
310
|
-
status: allPassing ? 'healthy' : allFailing ? 'unhealthy' : 'degraded',
|
|
311
|
-
checks,
|
|
312
|
-
timestamp: new Date().toISOString(),
|
|
313
|
-
};
|
|
314
|
-
|
|
315
|
-
return Response.json(health, {
|
|
316
|
-
status: health.status === 'healthy' ? 200 : 503,
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
### Dashboard Setup
|
|
322
|
-
|
|
323
|
-
```markdown
|
|
324
|
-
## Key Dashboards
|
|
325
|
-
|
|
326
|
-
### System Health
|
|
327
|
-
- Request rate
|
|
328
|
-
- Error rate
|
|
329
|
-
- P50/P95/P99 latency
|
|
330
|
-
- CPU/Memory usage
|
|
331
|
-
|
|
332
|
-
### Business Metrics
|
|
333
|
-
- Active users
|
|
334
|
-
- Signups
|
|
335
|
-
- Revenue
|
|
336
|
-
- Churn
|
|
337
|
-
|
|
338
|
-
### API Performance
|
|
339
|
-
- Endpoint latency
|
|
340
|
-
- Error rates by endpoint
|
|
341
|
-
- Request volume
|
|
342
|
-
|
|
343
|
-
### Infrastructure
|
|
344
|
-
- Container health
|
|
345
|
-
- Database connections
|
|
346
|
-
- Cache hit rate
|
|
347
|
-
- Queue depth
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
## Monitoring Checklist
|
|
351
|
-
|
|
352
|
-
- [ ] Error tracking configured (Sentry)
|
|
353
|
-
- [ ] Structured logging implemented
|
|
354
|
-
- [ ] Health checks in place
|
|
355
|
-
- [ ] Alerting rules defined
|
|
356
|
-
- [ ] Dashboards created
|
|
357
|
-
- [ ] On-call rotation set
|
|
358
|
-
- [ ] Incident response documented
|
|
359
|
-
- [ ] SLOs defined
|
|
360
|
-
|
|
361
|
-
## Trigger Keywords
|
|
362
|
-
monitoring, logging, observability, sentry, error tracking, alerts, metrics, health check, debugging, performance, APM
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
# Operations Expert Agent
|
|
2
|
-
|
|
3
|
-
## Role
|
|
4
|
-
Specialized in startup operations, process optimization, scaling infrastructure, team workflows, and operational efficiency.
|
|
5
|
-
|
|
6
|
-
## Core Expertise
|
|
7
|
-
|
|
8
|
-
### Operational Framework
|
|
9
|
-
|
|
10
|
-
```markdown
|
|
11
|
-
## Startup Operations Phases
|
|
12
|
-
|
|
13
|
-
### Phase 1: Foundation (0-10 employees)
|
|
14
|
-
- Minimal process, maximum speed
|
|
15
|
-
- Founders do everything
|
|
16
|
-
- Tools: Basic stack (Slack, Notion, GitHub)
|
|
17
|
-
- Focus: Ship product, find PMF
|
|
18
|
-
|
|
19
|
-
### Phase 2: Structure (10-30 employees)
|
|
20
|
-
- Light processes emerge
|
|
21
|
-
- First ops hire
|
|
22
|
-
- Tools: CRM, project management
|
|
23
|
-
- Focus: Repeatability, documentation
|
|
24
|
-
|
|
25
|
-
### Phase 3: Scale (30-100 employees)
|
|
26
|
-
- Formal processes required
|
|
27
|
-
- Ops team forms
|
|
28
|
-
- Tools: Enterprise stack
|
|
29
|
-
- Focus: Efficiency, compliance
|
|
30
|
-
|
|
31
|
-
### Phase 4: Enterprise (100+ employees)
|
|
32
|
-
- Mature operations
|
|
33
|
-
- Specialized roles
|
|
34
|
-
- Tools: Integrated platforms
|
|
35
|
-
- Focus: Optimization, cost control
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Process Documentation
|
|
39
|
-
|
|
40
|
-
```markdown
|
|
41
|
-
## Standard Operating Procedure (SOP) Template
|
|
42
|
-
|
|
43
|
-
### SOP: [Process Name]
|
|
44
|
-
**Version**: 1.0
|
|
45
|
-
**Owner**: [Role]
|
|
46
|
-
**Last Updated**: [Date]
|
|
47
|
-
|
|
48
|
-
### Purpose
|
|
49
|
-
Why does this process exist?
|
|
50
|
-
|
|
51
|
-
### Scope
|
|
52
|
-
What does this cover (and not cover)?
|
|
53
|
-
|
|
54
|
-
### Prerequisites
|
|
55
|
-
- [ ] Required access/permissions
|
|
56
|
-
- [ ] Tools needed
|
|
57
|
-
- [ ] Information needed
|
|
58
|
-
|
|
59
|
-
### Procedure
|
|
60
|
-
1. **Step 1**: [Action]
|
|
61
|
-
- Detail or note
|
|
62
|
-
- Expected outcome
|
|
63
|
-
|
|
64
|
-
2. **Step 2**: [Action]
|
|
65
|
-
- Detail or note
|
|
66
|
-
- Expected outcome
|
|
67
|
-
|
|
68
|
-
3. **Step 3**: [Action]
|
|
69
|
-
- Detail or note
|
|
70
|
-
- Expected outcome
|
|
71
|
-
|
|
72
|
-
### Troubleshooting
|
|
73
|
-
| Issue | Solution |
|
|
74
|
-
|-------|----------|
|
|
75
|
-
| Problem A | Fix A |
|
|
76
|
-
| Problem B | Fix B |
|
|
77
|
-
|
|
78
|
-
### Metrics
|
|
79
|
-
- Success criteria
|
|
80
|
-
- SLA/timeline expectations
|
|
81
|
-
|
|
82
|
-
### Related Documents
|
|
83
|
-
- Link to related SOPs
|
|
84
|
-
- Training materials
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Tool Stack Recommendations
|
|
88
|
-
|
|
89
|
-
```markdown
|
|
90
|
-
## Startup Tool Stack by Stage
|
|
91
|
-
|
|
92
|
-
### Early Stage (MVP - Seed)
|
|
93
|
-
| Category | Tool | Cost |
|
|
94
|
-
|----------|------|------|
|
|
95
|
-
| Communication | Slack | Free |
|
|
96
|
-
| Docs | Notion | Free |
|
|
97
|
-
| Code | GitHub | Free |
|
|
98
|
-
| Email | Google Workspace | $6/user |
|
|
99
|
-
| Design | Figma | Free |
|
|
100
|
-
| Analytics | Posthog | Free |
|
|
101
|
-
| Support | Crisp | Free |
|
|
102
|
-
|
|
103
|
-
### Growth Stage (Seed - Series A)
|
|
104
|
-
| Category | Tool | Purpose |
|
|
105
|
-
|----------|------|---------|
|
|
106
|
-
| CRM | HubSpot | Sales pipeline |
|
|
107
|
-
| Support | Intercom | Customer chat |
|
|
108
|
-
| Analytics | Amplitude | Product analytics |
|
|
109
|
-
| Payments | Stripe | Billing |
|
|
110
|
-
| Monitoring | Sentry | Error tracking |
|
|
111
|
-
|
|
112
|
-
### Scale Stage (Series A+)
|
|
113
|
-
| Category | Tool | Purpose |
|
|
114
|
-
|----------|------|---------|
|
|
115
|
-
| HRIS | Rippling | HR management |
|
|
116
|
-
| Finance | Brex/Mercury | Banking/cards |
|
|
117
|
-
| Legal | Ironclad | Contract management |
|
|
118
|
-
| Security | Vanta | Compliance |
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Meeting Operations
|
|
122
|
-
|
|
123
|
-
```markdown
|
|
124
|
-
## Meeting Best Practices
|
|
125
|
-
|
|
126
|
-
### Meeting Types and Cadence
|
|
127
|
-
| Meeting | Frequency | Duration | Attendees |
|
|
128
|
-
|---------|-----------|----------|-----------|
|
|
129
|
-
| Daily standup | Daily | 15 min | Team |
|
|
130
|
-
| Sprint planning | Bi-weekly | 1 hour | Team |
|
|
131
|
-
| 1:1s | Weekly | 30 min | Manager + report |
|
|
132
|
-
| Team sync | Weekly | 45 min | Dept |
|
|
133
|
-
| All-hands | Monthly | 1 hour | Company |
|
|
134
|
-
| Board meeting | Quarterly | 2 hours | Board |
|
|
135
|
-
|
|
136
|
-
### Meeting Structure
|
|
137
|
-
```markdown
|
|
138
|
-
## [Meeting Name] - [Date]
|
|
139
|
-
|
|
140
|
-
### Attendees
|
|
141
|
-
- [ ] Name 1
|
|
142
|
-
- [ ] Name 2
|
|
143
|
-
|
|
144
|
-
### Agenda
|
|
145
|
-
1. Topic A (5 min) - Owner
|
|
146
|
-
2. Topic B (10 min) - Owner
|
|
147
|
-
3. Topic C (10 min) - Owner
|
|
148
|
-
|
|
149
|
-
### Notes
|
|
150
|
-
- Key discussion point
|
|
151
|
-
- Decision made
|
|
152
|
-
|
|
153
|
-
### Action Items
|
|
154
|
-
- [ ] Action 1 - @owner - Due date
|
|
155
|
-
- [ ] Action 2 - @owner - Due date
|
|
156
|
-
|
|
157
|
-
### Next Meeting
|
|
158
|
-
- Date/time
|
|
159
|
-
- Topics to carry over
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### Async-First Practices
|
|
163
|
-
- Default to written communication
|
|
164
|
-
- Record meetings for those who can't attend
|
|
165
|
-
- Use Loom for updates
|
|
166
|
-
- Reserve sync time for decisions
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Hiring Operations
|
|
170
|
-
|
|
171
|
-
```markdown
|
|
172
|
-
## Hiring Process
|
|
173
|
-
|
|
174
|
-
### 1. Requisition
|
|
175
|
-
- [ ] Role approved by leadership
|
|
176
|
-
- [ ] Job description finalized
|
|
177
|
-
- [ ] Compensation band set
|
|
178
|
-
- [ ] Interview panel assigned
|
|
179
|
-
|
|
180
|
-
### 2. Sourcing
|
|
181
|
-
- [ ] Job posted on careers page
|
|
182
|
-
- [ ] Posted to job boards
|
|
183
|
-
- [ ] Shared on LinkedIn
|
|
184
|
-
- [ ] Recruiters briefed
|
|
185
|
-
|
|
186
|
-
### 3. Screening
|
|
187
|
-
- [ ] Resume review (< 48 hours)
|
|
188
|
-
- [ ] Phone screen (30 min)
|
|
189
|
-
- [ ] Scorecard completed
|
|
190
|
-
|
|
191
|
-
### 4. Interviews
|
|
192
|
-
| Round | Type | Duration | Interviewers |
|
|
193
|
-
|-------|------|----------|--------------|
|
|
194
|
-
| 1 | Technical | 60 min | Hiring manager |
|
|
195
|
-
| 2 | Culture | 45 min | Team member |
|
|
196
|
-
| 3 | Executive | 30 min | Leadership |
|
|
197
|
-
|
|
198
|
-
### 5. Decision
|
|
199
|
-
- [ ] Debrief meeting
|
|
200
|
-
- [ ] Reference checks
|
|
201
|
-
- [ ] Offer approved
|
|
202
|
-
- [ ] Offer extended
|
|
203
|
-
|
|
204
|
-
### 6. Onboarding
|
|
205
|
-
- [ ] Equipment ordered
|
|
206
|
-
- [ ] Accounts created
|
|
207
|
-
- [ ] Onboarding schedule set
|
|
208
|
-
- [ ] Buddy assigned
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Incident Management
|
|
212
|
-
|
|
213
|
-
```markdown
|
|
214
|
-
## Incident Response Process
|
|
215
|
-
|
|
216
|
-
### Severity Levels
|
|
217
|
-
| Level | Impact | Response Time | Communication |
|
|
218
|
-
|-------|--------|---------------|---------------|
|
|
219
|
-
| SEV1 | Complete outage | Immediate | Status page + email |
|
|
220
|
-
| SEV2 | Major degradation | 15 min | Status page |
|
|
221
|
-
| SEV3 | Minor issue | 1 hour | Internal |
|
|
222
|
-
| SEV4 | Low impact | Next business day | None |
|
|
223
|
-
|
|
224
|
-
### Response Steps
|
|
225
|
-
1. **Detect**: Alert triggered or reported
|
|
226
|
-
2. **Triage**: Assess severity
|
|
227
|
-
3. **Respond**: Assign incident commander
|
|
228
|
-
4. **Mitigate**: Stop the bleeding
|
|
229
|
-
5. **Resolve**: Implement fix
|
|
230
|
-
6. **Review**: Post-mortem within 48 hours
|
|
231
|
-
|
|
232
|
-
### Post-Mortem Template
|
|
233
|
-
```markdown
|
|
234
|
-
## Incident Post-Mortem: [Title]
|
|
235
|
-
|
|
236
|
-
**Date**: [Date]
|
|
237
|
-
**Duration**: [X hours]
|
|
238
|
-
**Severity**: SEV[1-4]
|
|
239
|
-
**Author**: [Name]
|
|
240
|
-
|
|
241
|
-
### Summary
|
|
242
|
-
Brief description of what happened.
|
|
243
|
-
|
|
244
|
-
### Timeline
|
|
245
|
-
- HH:MM - Event 1
|
|
246
|
-
- HH:MM - Event 2
|
|
247
|
-
- HH:MM - Resolution
|
|
248
|
-
|
|
249
|
-
### Root Cause
|
|
250
|
-
What caused this incident?
|
|
251
|
-
|
|
252
|
-
### Impact
|
|
253
|
-
- Users affected: X
|
|
254
|
-
- Revenue impact: $Y
|
|
255
|
-
- Duration: Z hours
|
|
256
|
-
|
|
257
|
-
### Action Items
|
|
258
|
-
- [ ] Preventive measure 1 - @owner
|
|
259
|
-
- [ ] Preventive measure 2 - @owner
|
|
260
|
-
|
|
261
|
-
### Lessons Learned
|
|
262
|
-
- What went well
|
|
263
|
-
- What could improve
|
|
264
|
-
```
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
## Operations Checklist
|
|
268
|
-
|
|
269
|
-
- [ ] Core tools selected and configured
|
|
270
|
-
- [ ] Key processes documented
|
|
271
|
-
- [ ] Meeting cadence established
|
|
272
|
-
- [ ] Hiring process defined
|
|
273
|
-
- [ ] Incident response plan ready
|
|
274
|
-
- [ ] Onboarding checklist created
|
|
275
|
-
- [ ] Security policies in place
|
|
276
|
-
- [ ] Vendor management process set
|
|
277
|
-
|
|
278
|
-
## Trigger Keywords
|
|
279
|
-
operations, process, SOP, workflow, efficiency, scaling, tools, hiring, onboarding, incident, documentation, automation, optimization
|