superkit-mcp-server 1.0.2 → 1.1.0

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 (116) hide show
  1. package/ARCHITECTURE.md +102 -102
  2. package/README.md +67 -63
  3. package/SUPERKIT.md +168 -168
  4. package/agents/code-archaeologist.md +106 -0
  5. package/agents/coder.md +90 -90
  6. package/agents/data-engineer.md +28 -28
  7. package/agents/devops-engineer.md +242 -0
  8. package/agents/git-manager.md +203 -203
  9. package/agents/orchestrator.md +4 -0
  10. package/agents/penetration-tester.md +188 -0
  11. package/agents/performance-optimizer.md +187 -0
  12. package/agents/planner.md +270 -270
  13. package/agents/qa-automation-engineer.md +103 -0
  14. package/agents/quant-developer.md +32 -28
  15. package/agents/reviewer.md +100 -100
  16. package/agents/scout.md +222 -222
  17. package/agents/tester.md +274 -274
  18. package/agents/ui-designer.md +208 -208
  19. package/build/index.js +53 -1
  20. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  21. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  22. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  23. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  24. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  25. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  26. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  27. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  28. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  29. package/package.json +33 -33
  30. package/skills/meta/README.md +30 -30
  31. package/skills/meta/api-design/SKILL.md +134 -134
  32. package/skills/meta/code-review/SKILL.md +44 -37
  33. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  34. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  35. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  36. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  37. package/skills/meta/compound-docs/SKILL.md +133 -133
  38. package/skills/meta/debug/SKILL.md +40 -40
  39. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  40. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  41. package/skills/meta/docker/SKILL.md +126 -126
  42. package/skills/meta/examples/supabase/SKILL.md +46 -46
  43. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  44. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  45. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  46. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  47. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  48. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  49. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  50. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  51. package/skills/meta/file-todos/SKILL.md +88 -88
  52. package/skills/meta/mobile/SKILL.md +140 -140
  53. package/skills/meta/nextjs/SKILL.md +101 -101
  54. package/skills/meta/performance/SKILL.md +130 -130
  55. package/skills/meta/react-patterns/SKILL.md +83 -83
  56. package/skills/meta/security/SKILL.md +114 -114
  57. package/skills/meta/session-resume/SKILL.md +96 -96
  58. package/skills/meta/tailwind/SKILL.md +139 -139
  59. package/skills/meta/testing/SKILL.md +43 -43
  60. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  61. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  62. package/skills/tech/alpha-vantage/SKILL.md +142 -0
  63. package/skills/tech/alpha-vantage/references/commodities.md +153 -0
  64. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -0
  65. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -0
  66. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -0
  67. package/skills/tech/alpha-vantage/references/intelligence.md +138 -0
  68. package/skills/tech/alpha-vantage/references/options.md +93 -0
  69. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -0
  70. package/skills/tech/alpha-vantage/references/time-series.md +157 -0
  71. package/skills/tech/financial-modeling/SKILL.md +18 -0
  72. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -0
  73. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -0
  74. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -0
  75. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -0
  76. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1211 -0
  77. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -0
  78. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -0
  79. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -0
  80. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -0
  81. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -0
  82. package/skills/tech/intelligent-routing/SKILL.md +5 -5
  83. package/workflows/README.md +191 -191
  84. package/workflows/adr.md +174 -174
  85. package/workflows/changelog.md +74 -74
  86. package/workflows/compound.md +323 -323
  87. package/workflows/compound_health.md +74 -74
  88. package/workflows/create-agent-skill.md +139 -139
  89. package/workflows/cycle.md +144 -144
  90. package/workflows/deploy-docs.md +84 -84
  91. package/workflows/development-rules.md +37 -37
  92. package/workflows/doc.md +95 -95
  93. package/workflows/documentation-management.md +29 -29
  94. package/workflows/explore.md +146 -146
  95. package/workflows/generate_command.md +106 -106
  96. package/workflows/heal-skill.md +97 -97
  97. package/workflows/housekeeping.md +229 -229
  98. package/workflows/kit-setup.md +102 -102
  99. package/workflows/map-codebase.md +78 -0
  100. package/workflows/orchestration-protocol.md +38 -38
  101. package/workflows/plan-compound.md +439 -433
  102. package/workflows/plan_review.md +269 -248
  103. package/workflows/primary-workflow.md +32 -32
  104. package/workflows/promote_pattern.md +86 -86
  105. package/workflows/release-docs.md +82 -82
  106. package/workflows/report-bug.md +135 -135
  107. package/workflows/reproduce-bug.md +118 -118
  108. package/workflows/resolve_pr.md +133 -133
  109. package/workflows/resolve_todo.md +128 -128
  110. package/workflows/review-compound.md +376 -359
  111. package/workflows/skill-review.md +127 -127
  112. package/workflows/specs.md +257 -257
  113. package/workflows/triage-sprint.md +102 -102
  114. package/workflows/triage.md +152 -152
  115. package/workflows/work.md +399 -399
  116. package/workflows/xcode-test.md +93 -93
@@ -11,16 +11,16 @@ describe('mobileAudit', () => {
11
11
  name: 'Screen.tsx',
12
12
  isDirectory: () => false
13
13
  }]);
14
- vi.mocked(fs.readFile).mockResolvedValue(`
15
- import React from 'react';
16
- import { View, ScrollView } from 'react-native';
17
- export const Screen = () => {
18
- return (
19
- <ScrollView>
20
- {data.map(d => <View key={index} />)}
21
- </ScrollView>
22
- )
23
- }
14
+ vi.mocked(fs.readFile).mockResolvedValue(`
15
+ import React from 'react';
16
+ import { View, ScrollView } from 'react-native';
17
+ export const Screen = () => {
18
+ return (
19
+ <ScrollView>
20
+ {data.map(d => <View key={index} />)}
21
+ </ScrollView>
22
+ )
23
+ }
24
24
  `);
25
25
  const res = await runMobileAudit('.');
26
26
  expect(res.passed).toBe(false);
@@ -31,8 +31,8 @@ describe('mobileAudit', () => {
31
31
  name: 'regular.tsx',
32
32
  isDirectory: () => false
33
33
  }]);
34
- vi.mocked(fs.readFile).mockResolvedValue(`
35
- export const App = () => <div>Hello Web</div>
34
+ vi.mocked(fs.readFile).mockResolvedValue(`
35
+ export const App = () => <div>Hello Web</div>
36
36
  `);
37
37
  const res = await runMobileAudit('.');
38
38
  expect(res.passed).toBe(true);
@@ -11,14 +11,14 @@ describe('reactPerformanceChecker', () => {
11
11
  name: 'Home.tsx',
12
12
  isDirectory: () => false
13
13
  }]);
14
- vi.mocked(fs.readFile).mockResolvedValue(`
15
- import { something } from '@/components/index';
16
-
17
- async function loadData() {
18
- const a = await fetchA();
19
- const b = await fetchB();
20
- return { a, b };
21
- }
14
+ vi.mocked(fs.readFile).mockResolvedValue(`
15
+ import { something } from '@/components/index';
16
+
17
+ async function loadData() {
18
+ const a = await fetchA();
19
+ const b = await fetchB();
20
+ return { a, b };
21
+ }
22
22
  `);
23
23
  const res = await runReactPerformanceChecker('.');
24
24
  console.log("RPC BAD REPORT:", res.report);
@@ -31,15 +31,15 @@ describe('reactPerformanceChecker', () => {
31
31
  name: 'App.tsx',
32
32
  isDirectory: () => false
33
33
  }]);
34
- vi.mocked(fs.readFile).mockResolvedValue(`
35
- import { useQuery } from '@tanstack/react-query';
36
- import Image from 'next/image';
37
-
38
- const App = React.memo((props: Props) => {
39
- const q = useQuery('data', fetchParallel);
40
- return <Image src="foo" alt="bar" />
41
- });
42
- export default App;
34
+ vi.mocked(fs.readFile).mockResolvedValue(`
35
+ import { useQuery } from '@tanstack/react-query';
36
+ import Image from 'next/image';
37
+
38
+ const App = React.memo((props: Props) => {
39
+ const q = useQuery('data', fetchParallel);
40
+ return <Image src="foo" alt="bar" />
41
+ });
42
+ export default App;
43
43
  `);
44
44
  const res = await runReactPerformanceChecker('.');
45
45
  console.log("RPC GOOD REPORT:", res.report);
@@ -13,8 +13,8 @@ describe('securityScan', () => {
13
13
  name: 'config.json',
14
14
  isDirectory: () => false
15
15
  }]);
16
- vi.mocked(fs.readFile).mockResolvedValue(`
17
- { "aws_key": "AKIA1234567890123456" }
16
+ vi.mocked(fs.readFile).mockResolvedValue(`
17
+ { "aws_key": "AKIA1234567890123456" }
18
18
  `);
19
19
  const result = await scanSecrets('/mock');
20
20
  expect(result.findings).toBeDefined();
@@ -28,10 +28,10 @@ describe('securityScan', () => {
28
28
  name: 'bad_code.js',
29
29
  isDirectory: () => false
30
30
  }]);
31
- vi.mocked(fs.readFile).mockResolvedValue(`
32
- eval('2 + 2');
33
- import { exec } from 'child_process';
34
- child_process.exec('rm -rf /');
31
+ vi.mocked(fs.readFile).mockResolvedValue(`
32
+ eval('2 + 2');
33
+ import { exec } from 'child_process';
34
+ child_process.exec('rm -rf /');
35
35
  `);
36
36
  const result = await scanCodePatterns('/mock');
37
37
  expect(result.findings.length).toBeGreaterThan(1);
@@ -11,22 +11,22 @@ describe('seoChecker', () => {
11
11
  name: 'index.tsx', // valid page layout file
12
12
  isDirectory: () => false
13
13
  }]);
14
- vi.mocked(fs.readFile).mockResolvedValue(`
15
- export default function Index() {
16
- return (
17
- <html>
18
- <head>
19
- <title>Oops missing description and og</title>
20
- </head>
21
- <body>
22
- <h1>Title</h1>
23
- <h1>Duplicate Title</h1>
24
- <img src="foo" />
25
- <img src="bar" alt="" />
26
- </body>
27
- </html>
28
- )
29
- }
14
+ vi.mocked(fs.readFile).mockResolvedValue(`
15
+ export default function Index() {
16
+ return (
17
+ <html>
18
+ <head>
19
+ <title>Oops missing description and og</title>
20
+ </head>
21
+ <body>
22
+ <h1>Title</h1>
23
+ <h1>Duplicate Title</h1>
24
+ <img src="foo" />
25
+ <img src="bar" alt="" />
26
+ </body>
27
+ </html>
28
+ )
29
+ }
30
30
  `);
31
31
  const res = await runSeoChecker('.');
32
32
  expect(res.passed).toBe(false);
@@ -14,9 +14,9 @@ describe('typeCoverage', () => {
14
14
  isDirectory: () => false
15
15
  }]);
16
16
  // Mock readFile to return a snippet with an untyped function and an "any"
17
- vi.mocked(fs.readFile).mockResolvedValue(`
18
- function test(): any { return 1; }
19
- const test2 = (x) => console.log(x);
17
+ vi.mocked(fs.readFile).mockResolvedValue(`
18
+ function test(): any { return 1; }
19
+ const test2 = (x) => console.log(x);
20
20
  `);
21
21
  const result = await checkTypescriptCoverage('/mock/folder');
22
22
  expect(result.type).toBe('typescript');
@@ -29,8 +29,8 @@ describe('typeCoverage', () => {
29
29
  name: 'good.ts',
30
30
  isDirectory: () => false
31
31
  }]);
32
- vi.mocked(fs.readFile).mockResolvedValue(`
33
- function typedFunc(val: string): number { return val.length; }
32
+ vi.mocked(fs.readFile).mockResolvedValue(`
33
+ function typedFunc(val: string): number { return val.length; }
34
34
  `);
35
35
  const result = await checkTypescriptCoverage('/mock/good');
36
36
  expect(result.stats.any_count).toBe(0);
@@ -44,15 +44,15 @@ describe('typeCoverage', () => {
44
44
  name: 'script.py',
45
45
  isDirectory: () => false
46
46
  }]);
47
- vi.mocked(fs.readFile).mockResolvedValue(`
48
- def bad_func(arg):
49
- pass
50
-
51
- def good_func(arg: str) -> bool:
52
- return True
53
-
54
- def any_func(arg: Any) -> Any:
55
- pass
47
+ vi.mocked(fs.readFile).mockResolvedValue(`
48
+ def bad_func(arg):
49
+ pass
50
+
51
+ def good_func(arg: str) -> bool:
52
+ return True
53
+
54
+ def any_func(arg: Any) -> Any:
55
+ pass
56
56
  `);
57
57
  const result = await checkPythonCoverage('/mock/py');
58
58
  expect(result.stats.any_count).toBeGreaterThan(0);
package/package.json CHANGED
@@ -1,34 +1,34 @@
1
- {
2
- "name": "superkit-mcp-server",
3
- "version": "1.0.2",
4
- "type": "module",
5
- "description": "An MCP server for exploring and loading Super-Kit AI agent resources.",
6
- "main": "build/index.js",
7
- "bin": {
8
- "superkit-mcp-server": "./build/index.js"
9
- },
10
- "scripts": {
11
- "build": "tsc",
12
- "start": "node build/index.js",
13
- "dev": "tsc --watch"
14
- },
15
- "dependencies": {
16
- "@modelcontextprotocol/sdk": "^1.4.1",
17
- "playwright": "^1.58.2",
18
- "zod": "^3.23.8"
19
- },
20
- "devDependencies": {
21
- "@types/node": "^22.19.13",
22
- "typescript": "^5.7.2",
23
- "vitest": "^4.0.18"
24
- },
25
- "files": [
26
- "build/",
27
- "agents/",
28
- "skills/",
29
- "workflows/",
30
- "SUPERKIT.md",
31
- "README.md",
32
- "ARCHITECTURE.md"
33
- ]
1
+ {
2
+ "name": "superkit-mcp-server",
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "description": "An MCP server for exploring and loading Super-Kit AI agent resources.",
6
+ "main": "build/index.js",
7
+ "bin": {
8
+ "superkit-mcp-server": "./build/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "start": "node build/index.js",
13
+ "dev": "tsc --watch"
14
+ },
15
+ "dependencies": {
16
+ "@modelcontextprotocol/sdk": "^1.4.1",
17
+ "playwright": "^1.58.2",
18
+ "zod": "^3.23.8"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.19.13",
22
+ "typescript": "^5.7.2",
23
+ "vitest": "^4.0.18"
24
+ },
25
+ "files": [
26
+ "build/",
27
+ "agents/",
28
+ "skills/",
29
+ "workflows/",
30
+ "SUPERKIT.md",
31
+ "README.md",
32
+ "ARCHITECTURE.md"
33
+ ]
34
34
  }
@@ -1,30 +1,30 @@
1
- # Agent Skills & Capabilities
2
-
3
- ## Purpose
4
- The "brain" of the AI Agent. This directory contains the definitions, memories, and tools that enable the Agent to work effectively on the codebase.
5
-
6
- ## Components
7
-
8
- | Component | Description |
9
- |-----------|-------------|
10
- | `compound-docs/` | Templates and logic for the Compounding Knowledge system. |
11
- | `file-todos/` | Logic for the file-based task management system. |
12
- | `session-resume/` | Context restoration protocols for new sessions. |
13
- | `code-review/` | Checklists and workflows for automated code review. |
14
- | `testing/` | Custom testing infrastructure and patterns. |
15
- | `debug/` | Root-cause analysis and debugging protocols. |
16
- | `react-hooks/` | Best practices and patterns for React development. |
17
- | `examples/` | Project-specific or optional skill examples (e.g. Supabase). |
18
-
19
- ## Component Details
20
-
21
- ### `compound-docs/`
22
- Contains the `SKILL.md` instruction set and template files used by the `/compound` workflow to generate persistent documentation.
23
-
24
- ### `file-todos/`
25
- Contains the logic for managing the `todos/` directory, including status transitions and priority handling.
26
-
27
- ## Changelog
28
-
29
- ### 2025-12-23
30
- - Initialized README documentation.
1
+ # Agent Skills & Capabilities
2
+
3
+ ## Purpose
4
+ The "brain" of the AI Agent. This directory contains the definitions, memories, and tools that enable the Agent to work effectively on the codebase.
5
+
6
+ ## Components
7
+
8
+ | Component | Description |
9
+ |-----------|-------------|
10
+ | `compound-docs/` | Templates and logic for the Compounding Knowledge system. |
11
+ | `file-todos/` | Logic for the file-based task management system. |
12
+ | `session-resume/` | Context restoration protocols for new sessions. |
13
+ | `code-review/` | Checklists and workflows for automated code review. |
14
+ | `testing/` | Custom testing infrastructure and patterns. |
15
+ | `debug/` | Root-cause analysis and debugging protocols. |
16
+ | `react-hooks/` | Best practices and patterns for React development. |
17
+ | `examples/` | Project-specific or optional skill examples (e.g. Supabase). |
18
+
19
+ ## Component Details
20
+
21
+ ### `compound-docs/`
22
+ Contains the `SKILL.md` instruction set and template files used by the `/compound` workflow to generate persistent documentation.
23
+
24
+ ### `file-todos/`
25
+ Contains the logic for managing the `todos/` directory, including status transitions and priority handling.
26
+
27
+ ## Changelog
28
+
29
+ ### 2025-12-23
30
+ - Initialized README documentation.
@@ -1,134 +1,134 @@
1
- # API Design Skill
2
-
3
- ## Overview
4
- RESTful API patterns, GraphQL design, and API best practices.
5
-
6
- ## RESTful Design Principles
7
-
8
- ### 1. Resource Naming
9
- ```
10
- ✅ Good:
11
- GET /users # List users
12
- GET /users/123 # Get user
13
- POST /users # Create user
14
- PUT /users/123 # Update user
15
- DELETE /users/123 # Delete user
16
-
17
- ❌ Bad:
18
- GET /getUsers
19
- POST /createUser
20
- GET /user/delete/123
21
- ```
22
-
23
- ### 2. HTTP Status Codes
24
- ```typescript
25
- // Success
26
- 200 OK - Successful GET/PUT
27
- 201 Created - Successful POST
28
- 204 No Content - Successful DELETE
29
-
30
- // Client Errors
31
- 400 Bad Request - Invalid input
32
- 401 Unauthorized - Auth required
33
- 403 Forbidden - No permission
34
- 404 Not Found - Resource doesn't exist
35
- 422 Unprocessable - Validation failed
36
-
37
- // Server Errors
38
- 500 Internal Error - Server bug
39
- 503 Service Unavailable - Maintenance
40
- ```
41
-
42
- ### 3. Response Format
43
- ```typescript
44
- // Success response
45
- {
46
- "data": {
47
- "id": "123",
48
- "name": "John",
49
- "email": "john@example.com"
50
- }
51
- }
52
-
53
- // Error response
54
- {
55
- "error": {
56
- "code": "VALIDATION_ERROR",
57
- "message": "Email is required",
58
- "details": [
59
- { "field": "email", "message": "This field is required" }
60
- ]
61
- }
62
- }
63
-
64
- // List with pagination
65
- {
66
- "data": [...],
67
- "meta": {
68
- "page": 1,
69
- "perPage": 20,
70
- "total": 150,
71
- "totalPages": 8
72
- }
73
- }
74
- ```
75
-
76
- ### 4. Pagination
77
- ```typescript
78
- // Offset-based
79
- GET /posts?page=2&limit=20
80
-
81
- // Cursor-based (better for large datasets)
82
- GET /posts?cursor=abc123&limit=20
83
- ```
84
-
85
- ### 5. Filtering & Sorting
86
- ```typescript
87
- // Filtering
88
- GET /posts?status=published&author=123
89
-
90
- // Sorting
91
- GET /posts?sort=-createdAt,title // - for DESC
92
- ```
93
-
94
- ## API Versioning
95
- ```typescript
96
- // URL versioning (recommended)
97
- GET /api/v1/users
98
-
99
- // Header versioning
100
- GET /api/users
101
- Accept: application/vnd.myapp.v1+json
102
- ```
103
-
104
- ## Rate Limiting
105
- ```typescript
106
- import rateLimit from 'express-rate-limit';
107
-
108
- const limiter = rateLimit({
109
- windowMs: 15 * 60 * 1000, // 15 minutes
110
- max: 100, // 100 requests per window
111
- message: { error: 'Too many requests' },
112
- });
113
-
114
- app.use('/api/', limiter);
115
- ```
116
-
117
- ## Input Validation
118
- ```typescript
119
- import { z } from 'zod';
120
-
121
- const CreateUserSchema = z.object({
122
- name: z.string().min(2).max(100),
123
- email: z.string().email(),
124
- age: z.number().int().min(0).max(150).optional(),
125
- });
126
-
127
- function createUser(req, res) {
128
- const result = CreateUserSchema.safeParse(req.body);
129
- if (!result.success) {
130
- return res.status(422).json({ error: result.error });
131
- }
132
- // Process validated data
133
- }
134
- ```
1
+ # API Design Skill
2
+
3
+ ## Overview
4
+ RESTful API patterns, GraphQL design, and API best practices.
5
+
6
+ ## RESTful Design Principles
7
+
8
+ ### 1. Resource Naming
9
+ ```
10
+ ✅ Good:
11
+ GET /users # List users
12
+ GET /users/123 # Get user
13
+ POST /users # Create user
14
+ PUT /users/123 # Update user
15
+ DELETE /users/123 # Delete user
16
+
17
+ ❌ Bad:
18
+ GET /getUsers
19
+ POST /createUser
20
+ GET /user/delete/123
21
+ ```
22
+
23
+ ### 2. HTTP Status Codes
24
+ ```typescript
25
+ // Success
26
+ 200 OK - Successful GET/PUT
27
+ 201 Created - Successful POST
28
+ 204 No Content - Successful DELETE
29
+
30
+ // Client Errors
31
+ 400 Bad Request - Invalid input
32
+ 401 Unauthorized - Auth required
33
+ 403 Forbidden - No permission
34
+ 404 Not Found - Resource doesn't exist
35
+ 422 Unprocessable - Validation failed
36
+
37
+ // Server Errors
38
+ 500 Internal Error - Server bug
39
+ 503 Service Unavailable - Maintenance
40
+ ```
41
+
42
+ ### 3. Response Format
43
+ ```typescript
44
+ // Success response
45
+ {
46
+ "data": {
47
+ "id": "123",
48
+ "name": "John",
49
+ "email": "john@example.com"
50
+ }
51
+ }
52
+
53
+ // Error response
54
+ {
55
+ "error": {
56
+ "code": "VALIDATION_ERROR",
57
+ "message": "Email is required",
58
+ "details": [
59
+ { "field": "email", "message": "This field is required" }
60
+ ]
61
+ }
62
+ }
63
+
64
+ // List with pagination
65
+ {
66
+ "data": [...],
67
+ "meta": {
68
+ "page": 1,
69
+ "perPage": 20,
70
+ "total": 150,
71
+ "totalPages": 8
72
+ }
73
+ }
74
+ ```
75
+
76
+ ### 4. Pagination
77
+ ```typescript
78
+ // Offset-based
79
+ GET /posts?page=2&limit=20
80
+
81
+ // Cursor-based (better for large datasets)
82
+ GET /posts?cursor=abc123&limit=20
83
+ ```
84
+
85
+ ### 5. Filtering & Sorting
86
+ ```typescript
87
+ // Filtering
88
+ GET /posts?status=published&author=123
89
+
90
+ // Sorting
91
+ GET /posts?sort=-createdAt,title // - for DESC
92
+ ```
93
+
94
+ ## API Versioning
95
+ ```typescript
96
+ // URL versioning (recommended)
97
+ GET /api/v1/users
98
+
99
+ // Header versioning
100
+ GET /api/users
101
+ Accept: application/vnd.myapp.v1+json
102
+ ```
103
+
104
+ ## Rate Limiting
105
+ ```typescript
106
+ import rateLimit from 'express-rate-limit';
107
+
108
+ const limiter = rateLimit({
109
+ windowMs: 15 * 60 * 1000, // 15 minutes
110
+ max: 100, // 100 requests per window
111
+ message: { error: 'Too many requests' },
112
+ });
113
+
114
+ app.use('/api/', limiter);
115
+ ```
116
+
117
+ ## Input Validation
118
+ ```typescript
119
+ import { z } from 'zod';
120
+
121
+ const CreateUserSchema = z.object({
122
+ name: z.string().min(2).max(100),
123
+ email: z.string().email(),
124
+ age: z.number().int().min(0).max(150).optional(),
125
+ });
126
+
127
+ function createUser(req, res) {
128
+ const result = CreateUserSchema.safeParse(req.body);
129
+ if (!result.success) {
130
+ return res.status(422).json({ error: result.error });
131
+ }
132
+ // Process validated data
133
+ }
134
+ ```