@codeharbor/agent-playbook 0.1.0 → 0.1.1

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.
Files changed (113) hide show
  1. package/package.json +5 -2
  2. package/skills/api-designer/README.md +36 -0
  3. package/skills/api-designer/SKILL.md +232 -0
  4. package/skills/api-designer/references/graphql-patterns.md +12 -0
  5. package/skills/api-designer/references/rest-patterns.md +17 -0
  6. package/skills/api-designer/scripts/generate_api.py +87 -0
  7. package/skills/api-designer/scripts/validate_api.py +48 -0
  8. package/skills/api-documenter/README.md +41 -0
  9. package/skills/api-documenter/SKILL.md +209 -0
  10. package/skills/api-documenter/references/examples/README.md +3 -0
  11. package/skills/api-documenter/references/examples/openapi-example.yaml +10 -0
  12. package/skills/api-documenter/references/openapi-template.yaml +5 -0
  13. package/skills/api-documenter/scripts/generate_openapi.py +84 -0
  14. package/skills/api-documenter/scripts/validate_openapi.py +45 -0
  15. package/skills/architecting-solutions/README.md +22 -0
  16. package/skills/architecting-solutions/SKILL.md +459 -0
  17. package/skills/auto-trigger/README.md +23 -0
  18. package/skills/auto-trigger/SKILL.md +183 -0
  19. package/skills/code-reviewer/README.md +59 -0
  20. package/skills/code-reviewer/SKILL.md +220 -0
  21. package/skills/code-reviewer/references/checklist.md +80 -0
  22. package/skills/code-reviewer/references/patterns.md +226 -0
  23. package/skills/code-reviewer/references/security.md +88 -0
  24. package/skills/code-reviewer/scripts/review_checklist.py +191 -0
  25. package/skills/commit-helper/README.md +58 -0
  26. package/skills/commit-helper/SKILL.md +159 -0
  27. package/skills/commit-helper/references/conventional-commits.md +68 -0
  28. package/skills/commit-helper/references/examples.md +125 -0
  29. package/skills/commit-helper/references/scopes.md +49 -0
  30. package/skills/commit-helper/scripts/validate_commit.py +70 -0
  31. package/skills/create-pr/README.md +182 -0
  32. package/skills/create-pr/SKILL.md +340 -0
  33. package/skills/debugger/README.md +53 -0
  34. package/skills/debugger/SKILL.md +239 -0
  35. package/skills/debugger/references/checklist.md +7 -0
  36. package/skills/debugger/references/errors.md +6 -0
  37. package/skills/debugger/references/patterns.md +5 -0
  38. package/skills/debugger/scripts/debug_report.py +77 -0
  39. package/skills/deployment-engineer/README.md +40 -0
  40. package/skills/deployment-engineer/SKILL.md +242 -0
  41. package/skills/deployment-engineer/references/kubernetes.md +23 -0
  42. package/skills/deployment-engineer/references/monitoring.md +14 -0
  43. package/skills/deployment-engineer/references/pipelines.md +12 -0
  44. package/skills/deployment-engineer/scripts/generate_deploy.py +72 -0
  45. package/skills/deployment-engineer/scripts/validate_deploy.py +46 -0
  46. package/skills/documentation-engineer/README.md +41 -0
  47. package/skills/documentation-engineer/SKILL.md +164 -0
  48. package/skills/documentation-engineer/references/api-template.md +22 -0
  49. package/skills/documentation-engineer/references/readme-template.md +25 -0
  50. package/skills/documentation-engineer/references/style-guide.md +13 -0
  51. package/skills/documentation-engineer/scripts/generate_docs.py +68 -0
  52. package/skills/documentation-engineer/scripts/validate_docs.py +46 -0
  53. package/skills/figma-designer/README.md +222 -0
  54. package/skills/figma-designer/SKILL.md +407 -0
  55. package/skills/figma-designer/references/example-output.md +86 -0
  56. package/skills/performance-engineer/README.md +42 -0
  57. package/skills/performance-engineer/SKILL.md +236 -0
  58. package/skills/performance-engineer/references/checklist.md +6 -0
  59. package/skills/performance-engineer/references/monitoring.md +5 -0
  60. package/skills/performance-engineer/references/optimization.md +7 -0
  61. package/skills/performance-engineer/scripts/perf_report.py +64 -0
  62. package/skills/performance-engineer/scripts/profile.py +63 -0
  63. package/skills/planning-with-files/README.md +27 -0
  64. package/skills/planning-with-files/SKILL.md +103 -0
  65. package/skills/prd-implementation-precheck/README.md +97 -0
  66. package/skills/prd-implementation-precheck/SKILL.md +112 -0
  67. package/skills/prd-planner/README.md +102 -0
  68. package/skills/prd-planner/SKILL.md +449 -0
  69. package/skills/prd-planner/references/edge-case-analysis.md +111 -0
  70. package/skills/qa-expert/README.md +37 -0
  71. package/skills/qa-expert/SKILL.md +225 -0
  72. package/skills/qa-expert/references/gates.md +11 -0
  73. package/skills/qa-expert/references/metrics.md +6 -0
  74. package/skills/qa-expert/references/strategy.md +11 -0
  75. package/skills/qa-expert/scripts/coverage_analysis.py +61 -0
  76. package/skills/qa-expert/scripts/generate_test_plan.py +68 -0
  77. package/skills/refactoring-specialist/README.md +37 -0
  78. package/skills/refactoring-specialist/SKILL.md +283 -0
  79. package/skills/refactoring-specialist/references/checklist.md +6 -0
  80. package/skills/refactoring-specialist/references/smells.md +6 -0
  81. package/skills/refactoring-specialist/references/techniques.md +6 -0
  82. package/skills/security-auditor/README.md +48 -0
  83. package/skills/security-auditor/SKILL.md +256 -0
  84. package/skills/security-auditor/references/checklist.md +7 -0
  85. package/skills/security-auditor/references/owasp.md +12 -0
  86. package/skills/security-auditor/references/remediation.md +7 -0
  87. package/skills/security-auditor/scripts/find_secrets.py +58 -0
  88. package/skills/security-auditor/scripts/security_audit.py +64 -0
  89. package/skills/self-improving-agent/README.md +136 -0
  90. package/skills/self-improving-agent/SKILL.md +407 -0
  91. package/skills/self-improving-agent/hooks/post-bash.sh +10 -0
  92. package/skills/self-improving-agent/hooks/pre-tool.sh +10 -0
  93. package/skills/self-improving-agent/hooks/session-end.sh +4 -0
  94. package/skills/self-improving-agent/memory/semantic-patterns.json +288 -0
  95. package/skills/self-improving-agent/references/appendix.md +131 -0
  96. package/skills/self-improving-agent/templates/correction-template.md +11 -0
  97. package/skills/self-improving-agent/templates/pattern-template.md +15 -0
  98. package/skills/self-improving-agent/templates/validation-template.md +14 -0
  99. package/skills/session-logger/README.md +50 -0
  100. package/skills/session-logger/SKILL.md +156 -0
  101. package/skills/skill-router/README.md +155 -0
  102. package/skills/skill-router/SKILL.md +215 -0
  103. package/skills/test-automator/README.md +41 -0
  104. package/skills/test-automator/SKILL.md +202 -0
  105. package/skills/test-automator/references/best-practices.md +6 -0
  106. package/skills/test-automator/references/examples/README.md +3 -0
  107. package/skills/test-automator/references/examples/unit-test-example.md +8 -0
  108. package/skills/test-automator/references/mocking.md +5 -0
  109. package/skills/test-automator/scripts/coverage_report.py +59 -0
  110. package/skills/test-automator/scripts/generate_test.py +66 -0
  111. package/skills/workflow-orchestrator/README.md +20 -0
  112. package/skills/workflow-orchestrator/SKILL.md +342 -0
  113. package/src/cli.js +25 -10
@@ -0,0 +1,407 @@
1
+ ---
2
+ name: figma-designer
3
+ description: Analyzes Figma designs and generates implementation-ready PRDs with detailed visual specifications. Use when user provides Figma link or uploads design screenshots. Requires Figma MCP server connection.
4
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob, WebFetch, WebSearch, AskUserQuestion
5
+ hooks:
6
+ after_complete:
7
+ - trigger: prd-planner
8
+ mode: ask_first
9
+ condition: prd_generated
10
+ reason: "Further refine PRD with 4-file pattern"
11
+ - trigger: self-improving-agent
12
+ mode: background
13
+ reason: "Learn design patterns for future reference"
14
+ - trigger: session-logger
15
+ mode: auto
16
+ reason: "Save design analysis session"
17
+ ---
18
+
19
+ # Figma Designer
20
+
21
+ > "Transform Figma designs into implementation-ready specifications with pixel-perfect accuracy"
22
+
23
+ ## Overview
24
+
25
+ This skill analyzes Figma designs through the Figma MCP server and generates detailed PRDs with precise visual specifications. It extracts design tokens, component specifications, and layout information that developers can implement directly.
26
+
27
+ ## Prerequisites
28
+
29
+ ### Figma MCP Server
30
+
31
+ Ensure the Figma MCP server is connected and accessible:
32
+
33
+ ```bash
34
+ # Check if Figma MCP is available
35
+ mcp-list
36
+ ```
37
+
38
+ If not available, install from: https://github.com/modelcontextprotocol/servers
39
+
40
+ Required Figma MCP tools:
41
+ - `figma_get_file` - Get file metadata
42
+ - `figma_get_nodes` - Get node details
43
+ - `figma_get_components` - Get component information
44
+
45
+ ## When This Skill Activates
46
+
47
+ Activates when you:
48
+ - Provide a Figma link (`https://www.figma.com/file/...`)
49
+ - Upload a design screenshot and mention "Figma"
50
+ - Say "analyze this design" or "extract design specs"
51
+ - Ask to "create PRD from Figma"
52
+
53
+ ## Design Analysis Workflow
54
+
55
+ ### Phase 1: Fetch Design Data
56
+
57
+ ```yaml
58
+ Input: Figma URL or File Key
59
+
60
+ Extract File Key from URL
61
+
62
+ Call figma_get_file to get metadata
63
+
64
+ Call figma_get_nodes to get design tree
65
+
66
+ Parse frame, component, and text nodes
67
+ ```
68
+
69
+ ### Phase 2: Extract Design Tokens
70
+
71
+ Create a comprehensive design token inventory:
72
+
73
+ ```typescript
74
+ // Design Token Structure
75
+ interface DesignTokens {
76
+ colors: {
77
+ primary: string[];
78
+ secondary: string[];
79
+ neutral: string[];
80
+ semantic: {
81
+ success: string;
82
+ warning: string;
83
+ error: string;
84
+ info: string;
85
+ };
86
+ };
87
+ typography: {
88
+ fontFamilies: Record<string, string>;
89
+ fontSizes: Record<string, number>;
90
+ fontWeights: Record<string, number>;
91
+ lineHeights: Record<string, number>;
92
+ letterSpacing: Record<string, number>;
93
+ };
94
+ spacing: {
95
+ scale: number; // 4, 8, 12, 16, etc.
96
+ values: Record<string, number>;
97
+ };
98
+ borders: {
99
+ radii: Record<string, number>;
100
+ widths: Record<string, number>;
101
+ };
102
+ shadows: Array<{
103
+ name: string;
104
+ values: string[];
105
+ }>;
106
+ }
107
+ ```
108
+
109
+ ### Phase 3: Analyze Component Hierarchy
110
+
111
+ ```
112
+ File
113
+ ├── Frames (Pages/Screens)
114
+ │ ├── Component Instances
115
+ │ │ ├── Primary Button
116
+ │ │ ├── Input Field
117
+ │ │ └── Card
118
+ │ └── Text Layers
119
+ │ ├── Headings
120
+ │ ├── Body
121
+ │ └── Labels
122
+ ```
123
+
124
+ For each component, extract:
125
+ - **Props**: Size, variant, state
126
+ - **Layout**: Flex direction, alignment, gap, padding
127
+ - **Styles**: Fill, stroke, effects
128
+ - **Content**: Text content, icons, images
129
+ - **Constraints**: Responsive behavior
130
+
131
+ ### Phase 4: Generate Visual Specifications
132
+
133
+ Use this template for each screen:
134
+
135
+ ```markdown
136
+ ## Screen: [Screen Name]
137
+
138
+ ### Layout Structure
139
+
140
+ ```
141
+ ┌─────────────────────────────────────────┐
142
+ │ [Header/Nav] │
143
+ ├─────────────────────────────────────────┤
144
+ │ │
145
+ │ [Main Content] │
146
+ │ ┌───────────┐ ┌───────────┐ │
147
+ │ │ Card 1 │ │ Card 2 │ │
148
+ │ └───────────┘ └───────────┘ │
149
+ │ │
150
+ ├─────────────────────────────────────────┤
151
+ │ [Footer] │
152
+ └─────────────────────────────────────────┘
153
+ ```
154
+
155
+ ### Design Specifications
156
+
157
+ #### Colors
158
+
159
+ | Token | Value | Usage |
160
+ |-------|-------|-------|
161
+ | Primary | `#007AFF` | Primary buttons, links |
162
+ | Background | `#FFFFFF` | Screen background |
163
+ | Surface | `#F5F5F7` | Cards, sections |
164
+ | Text Primary | `#1C1C1E` | Headings, body |
165
+ | Text Secondary | `#8E8E93` | Captions, labels |
166
+
167
+ #### Typography
168
+
169
+ | Style | Font | Size | Weight | Line Height | Letter Spacing |
170
+ |-------|------|------|--------|------------|---------------|
171
+ | Display Large | SF Pro Display | 28px | Bold (700) | 34px | -0.5px |
172
+ | Heading 1 | SF Pro Display | 24px | Bold (700) | 32px | -0.3px |
173
+ | Heading 2 | SF Pro Display | 20px | Semibold (600) | 28px | -0.2px |
174
+ | Body Large | SF Pro Text | 17px | Regular (400) | 24px | -0.4px |
175
+ | Body | SF Pro Text | 15px | Regular (400) | 22px | -0.3px |
176
+ | Caption | SF Pro Text | 13px | Regular (400) | 18px | -0.1px |
177
+
178
+ #### Spacing
179
+
180
+ | Token | Value | Usage |
181
+ |-------|-------|-------|
182
+ | xs | 4px | Icon padding |
183
+ | sm | 8px | Tight spacing |
184
+ | md | 12px | Card padding |
185
+ | lg | 16px | Section spacing |
186
+ | xl | 24px | Large gaps |
187
+ | 2xl | 32px | Page margins |
188
+
189
+ #### Component: Primary Button
190
+
191
+ ```typescript
192
+ interface PrimaryButtonProps {
193
+ size?: 'small' | 'medium' | 'large';
194
+ variant?: 'primary' | 'secondary' | 'tertiary';
195
+ disabled?: boolean;
196
+ }
197
+
198
+ // Sizes
199
+ size.small = {
200
+ height: 32px,
201
+ paddingHorizontal: 12px,
202
+ fontSize: 15,
203
+ iconSize: 16,
204
+ }
205
+
206
+ size.medium = {
207
+ height: 40px,
208
+ paddingHorizontal: 16px,
209
+ fontSize: 15,
210
+ iconSize: 20,
211
+ }
212
+
213
+ size.large = {
214
+ height: 48px,
215
+ paddingHorizontal: 24px,
216
+ fontSize: 17,
217
+ iconSize: 24,
218
+ }
219
+
220
+ // Variants
221
+ variant.primary = {
222
+ backgroundColor: '#007AFF',
223
+ color: '#FFFFFF',
224
+ }
225
+
226
+ variant.secondary = {
227
+ backgroundColor: '#F5F5F7',
228
+ color: '#007AFF',
229
+ }
230
+
231
+ variant.tertiary = {
232
+ backgroundColor: 'transparent',
233
+ color: '#007AFF',
234
+ }
235
+ ```
236
+
237
+ #### Constraints & Responsive Behavior
238
+
239
+ | Element | Constraints | Responsive Behavior |
240
+ |---------|-------------|---------------------|
241
+ | Header | Left, Right, Top | Sticky on scroll |
242
+ | Sidebar | Left, Top, Bottom | Collapses to drawer on mobile |
243
+ | Content | Left, Right (16px) | Full width on mobile |
244
+
245
+ ### Interaction States
246
+
247
+ | Element | Default | Hover | Pressed | Disabled |
248
+ |---------|---------|-------|--------|----------|
249
+ | Primary Button | opacity: 1 | opacity: 0.8 | opacity: 0.6 | opacity: 0.4 |
250
+ | Icon Button | opacity: 1 | background: rgba(0,0,0,0.05) | background: rgba(0,0,0,0.1) | opacity: 0.3 |
251
+ | Card | shadow: sm | shadow: md | - | opacity: 0.6 |
252
+ ```
253
+
254
+ ## Output Formats
255
+
256
+ ### Option 1: Full PRD (Recommended)
257
+
258
+ Generates a complete 4-file PRD:
259
+ - `docs/{feature}-notes.md` - Design decisions
260
+ - `docs/{feature}-task-plan.md` - Implementation tasks
261
+ - `docs/{feature}-prd.md` - Product requirements
262
+ - `docs/{feature}-tech.md` - Technical specifications
263
+
264
+ ### Option 2: Visual Spec Document
265
+
266
+ Generates a design specification document:
267
+ ```
268
+ docs/{feature}-design-spec.md
269
+ ```
270
+
271
+ ### Option 3: Component Library
272
+
273
+ For design systems, generates:
274
+ ```
275
+ src/components/
276
+ ├── Button/
277
+ │ ├── Button.tsx
278
+ │ ├── Button.test.tsx
279
+ │ └── Button.stories.tsx
280
+ ├── Input/
281
+ ├── Card/
282
+ └── tokens.ts
283
+ ```
284
+
285
+ ## Quick Reference: Design Token Categories
286
+
287
+ ### Always Extract These
288
+
289
+ | Category | What to Extract | Why |
290
+ |----------|----------------|-----|
291
+ | **Colors** | Hex/RGBA values | Theme consistency |
292
+ | **Typography** | Font family, size, weight, spacing | Text hierarchy |
293
+ | **Spacing** | Padding, margin, gap values | Layout alignment |
294
+ | **Borders** | Radius, width values | Shape consistency |
295
+ | **Shadows** | Offset, blur, spread, color | Depth perception |
296
+ | **Icons** | Name, size, color | Visual consistency |
297
+ | **Images** | URL, dimensions, fit mode | Asset management |
298
+
299
+ ## Design Review Checklist
300
+
301
+ Before generating PRD, verify:
302
+
303
+ - [ ] All screens are accounted for
304
+ - [ ] Design tokens are extracted
305
+ - [ ] Component variants are documented
306
+ - [ ] Responsive behavior is specified
307
+ - [ ] Interaction states are defined
308
+ - [ ] Accessibility (WCAG) is considered
309
+ - [ ] Color contrast ratio ≥ 4.5:1
310
+ - [ ] Touch targets ≥ 44x44px
311
+ - [ ] Focus indicators visible
312
+
313
+ ## Frame Analysis Template
314
+
315
+ For each frame/screen in the Figma file:
316
+
317
+ ```markdown
318
+ ## Frame: {Frame Name}
319
+
320
+ ### Purpose
321
+ {What this screen does}
322
+
323
+ ### Elements
324
+
325
+ | Element | Type | Styles | Props |
326
+ |---------|------|--------|-------|
327
+ | {Name} | {Component/Text/Vector} | {css} | {props} |
328
+ | {Name} | {Component/Text/Vector} | {css} | {props} |
329
+
330
+ ### Layout
331
+ - Container: {width, height, fill}
332
+ - Position: {absolute/relative}
333
+ - Constraints: {left, right, top, bottom}
334
+ - Auto Layout: {direction, spacing, padding, alignment}
335
+
336
+ ### Content Hierarchy
337
+ 1. {Primary element}
338
+ 2. {Secondary element}
339
+ 3. {Tertiary element}
340
+
341
+ ### Notes
342
+ {Any special considerations}
343
+ ```
344
+
345
+ ## Integration with Other Skills
346
+
347
+ ### Typical Workflow
348
+
349
+ ```
350
+ Figma URL → figma-designer → Visual Specs
351
+
352
+ prd-planner → PRD
353
+
354
+ implementation → Code
355
+
356
+ code-reviewer → Quality Check
357
+ ```
358
+
359
+ ### Handoff to Development
360
+
361
+ After generating specifications:
362
+
363
+ ```markdown
364
+ ## Developer Handoff
365
+
366
+ ### Design Files
367
+ - Figma: {url}
368
+ - Design Spec: {link}
369
+
370
+ ### Design Tokens
371
+ - Generated: `tokens.ts`
372
+ - Color palette: `colors.ts`
373
+ - Typography: `typography.ts`
374
+
375
+ ### Component Library
376
+ - Storybook: {url}
377
+ - Component docs: {link}
378
+
379
+ ### Assets
380
+ - Icons: {folder}
381
+ - Images: {folder}
382
+ - Exports: {format}
383
+ ```
384
+
385
+ ## Best Practices
386
+
387
+ ### DO
388
+
389
+ ✅ Extract exact pixel values for critical dimensions
390
+ ✅ Document component variants and states
391
+ ✅ Include responsive breakpoints
392
+ ✅ Note any platform differences (iOS vs Android)
393
+ ✅ Include accessibility considerations
394
+ ✅ Export design tokens as constants
395
+
396
+ ### DON'T
397
+
398
+ ❌ Round spacing values (use exact 4px/8px/12px)
399
+ ❌ Ignore hover/focus states
400
+ ❌ Skip constraint behavior
401
+ ❌ Forget about empty states
402
+ ❌ Omit loading states
403
+ ❌ Assume platform defaults without verification
404
+
405
+ ## Examples and Platform Notes
406
+
407
+ See `references/example-output.md` for a full sample output and platform-specific considerations.
@@ -0,0 +1,86 @@
1
+ # Example Output
2
+
3
+ # Login Screen PRD
4
+
5
+ ## Visual Specification
6
+
7
+ ### Layout
8
+ - Logo aligned left, icon aligned right
9
+ - Form fields stacked with 16px vertical spacing
10
+ - Primary button below the form
11
+
12
+ ### Technical Specs
13
+
14
+ ```text
15
+ container: {
16
+ width: 100%,
17
+ height: 100%,
18
+ padding: 24px,
19
+ backgroundColor: #FFFFFF,
20
+ justifyContent: center,
21
+ }
22
+
23
+ input: {
24
+ height: 48,
25
+ paddingHorizontal: 16,
26
+ backgroundColor: #F5F5F7,
27
+ borderRadius: 12,
28
+ borderWidth: 1,
29
+ borderColor: transparent,
30
+ }
31
+
32
+ input:focus: {
33
+ borderColor: #007AFF,
34
+ }
35
+ ```
36
+
37
+ ### Generated Code
38
+
39
+ ```typescript
40
+ // LoginScreen.tsx
41
+ export const LoginScreen = () => {
42
+ return (
43
+ <View style={styles.container}>
44
+ <Text style={styles.logo}>App Name</Text>
45
+ <Text style={styles.subtitle}>Welcome back</Text>
46
+ <TextInput placeholder="Email" style={styles.input} />
47
+ <TextInput placeholder="Password" secureTextEntry style={styles.input} />
48
+ <TouchableOpacity style={styles.button}>
49
+ <Text style={styles.buttonText}>Sign In</Text>
50
+ </TouchableOpacity>
51
+ </View>
52
+ );
53
+ };
54
+ ```
55
+
56
+ # Platform-Specific Considerations
57
+
58
+ ## React Native
59
+
60
+ ```typescript
61
+ const styles = {
62
+ container: {
63
+ paddingHorizontal: 16,
64
+ paddingVertical: 16,
65
+ gap: 12,
66
+ },
67
+ borderRadius: 12,
68
+ };
69
+ ```
70
+
71
+ ## Web (React)
72
+
73
+ ```css
74
+ .button {
75
+ padding: 16px;
76
+ gap: 12px;
77
+ border-radius: 12px;
78
+ }
79
+ ```
80
+
81
+ ## SwiftUI
82
+
83
+ ```swift
84
+ .padding(16)
85
+ .cornerRadius(12)
86
+ ```
@@ -0,0 +1,42 @@
1
+ # Performance Engineer
2
+
3
+ > A Claude Code skill for performance optimization and analysis.
4
+
5
+ ## Installation
6
+
7
+ This skill is part of the [agent-playbook](https://github.com/Charon-Fan/agent-playbook) collection.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ You: Optimize this code
13
+ You: Why is this slow?
14
+ You: Profile this application
15
+ ```
16
+
17
+ ## Performance Targets
18
+
19
+ | Metric | Target |
20
+ |--------|--------|
21
+ | API Response (p50) | < 100ms |
22
+ | API Response (p95) | < 500ms |
23
+ | Database Query | < 50ms |
24
+ | Page Load (FMP) | < 2s |
25
+ | Time to Interactive | < 3s |
26
+
27
+ ## Scripts
28
+
29
+ Profile application:
30
+ ```bash
31
+ python scripts/profile.py
32
+ ```
33
+
34
+ Generate performance report:
35
+ ```bash
36
+ python scripts/perf_report.py
37
+ ```
38
+
39
+ ## Resources
40
+
41
+ - [Web.dev Performance](https://web.dev/performance/)
42
+ - [Google Performance](https://developer.chrome.com/docs/lighthouse/performance/)