create-raffles-it 1.0.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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +214 -0
  3. package/agents/.agents +105 -0
  4. package/agents/backend-specialist/agent.yaml +21 -0
  5. package/agents/backend-specialist/prompt.md +255 -0
  6. package/agents/code-archaeologist/agent.yaml +13 -0
  7. package/agents/code-archaeologist/prompt.md +98 -0
  8. package/agents/database-architect/agent.yaml +13 -0
  9. package/agents/database-architect/prompt.md +218 -0
  10. package/agents/debugger/agent.yaml +7 -0
  11. package/agents/debugger/prompt.md +219 -0
  12. package/agents/devops-engineer/agent.yaml +16 -0
  13. package/agents/devops-engineer/prompt.md +234 -0
  14. package/agents/documentation-writer/agent.yaml +13 -0
  15. package/agents/documentation-writer/prompt.md +96 -0
  16. package/agents/explorer-agent/agent.yaml +16 -0
  17. package/agents/explorer-agent/prompt.md +65 -0
  18. package/agents/frontend-specialist/agent.yaml +17 -0
  19. package/agents/frontend-specialist/prompt.md +585 -0
  20. package/agents/orchestrator/agent.yaml +21 -0
  21. package/agents/orchestrator/prompt.md +408 -0
  22. package/agents/penetration-tester/agent.yaml +15 -0
  23. package/agents/penetration-tester/prompt.md +180 -0
  24. package/agents/performance-optimizer/agent.yaml +13 -0
  25. package/agents/performance-optimizer/prompt.md +179 -0
  26. package/agents/product-manager/agent.yaml +12 -0
  27. package/agents/product-manager/prompt.md +104 -0
  28. package/agents/product-owner/agent.yaml +12 -0
  29. package/agents/product-owner/prompt.md +87 -0
  30. package/agents/project-planner/agent.yaml +13 -0
  31. package/agents/project-planner/prompt.md +397 -0
  32. package/agents/qa-automation-engineer/agent.yaml +16 -0
  33. package/agents/qa-automation-engineer/prompt.md +95 -0
  34. package/agents/security-auditor/agent.yaml +15 -0
  35. package/agents/security-auditor/prompt.md +162 -0
  36. package/agents/seo-specialist/agent.yaml +13 -0
  37. package/agents/seo-specialist/prompt.md +103 -0
  38. package/agents/test-engineer/agent.yaml +17 -0
  39. package/agents/test-engineer/prompt.md +150 -0
  40. package/bin/commands/help.js +19 -0
  41. package/bin/commands/init.js +125 -0
  42. package/bin/commands/list.js +40 -0
  43. package/bin/index.js +44 -0
  44. package/bin/utils/logger.js +32 -0
  45. package/bin/utils/scaffold.js +114 -0
  46. package/configs/mcp_config.json +24 -0
  47. package/configs/model.yaml +20 -0
  48. package/configs/runtime.yaml +22 -0
  49. package/package.json +56 -0
  50. package/prompts/planning.md +31 -0
  51. package/prompts/reflection.md +21 -0
  52. package/prompts/system.md +24 -0
  53. package/rules/GEMINI.md +273 -0
  54. package/skills/api-patterns/SKILL.md +81 -0
  55. package/skills/api-patterns/api-style.md +42 -0
  56. package/skills/api-patterns/auth.md +24 -0
  57. package/skills/api-patterns/documentation.md +26 -0
  58. package/skills/api-patterns/graphql.md +41 -0
  59. package/skills/api-patterns/rate-limiting.md +31 -0
  60. package/skills/api-patterns/response.md +37 -0
  61. package/skills/api-patterns/rest.md +40 -0
  62. package/skills/api-patterns/scripts/api_validator.py +211 -0
  63. package/skills/api-patterns/security-testing.md +122 -0
  64. package/skills/api-patterns/skill.yaml +3 -0
  65. package/skills/api-patterns/trpc.md +41 -0
  66. package/skills/api-patterns/versioning.md +22 -0
  67. package/skills/architecture/SKILL.md +55 -0
  68. package/skills/architecture/context-discovery.md +43 -0
  69. package/skills/architecture/examples.md +94 -0
  70. package/skills/architecture/pattern-selection.md +68 -0
  71. package/skills/architecture/patterns-reference.md +50 -0
  72. package/skills/architecture/skill.yaml +3 -0
  73. package/skills/architecture/trade-off-analysis.md +77 -0
  74. package/skills/brainstorming/SKILL.md +163 -0
  75. package/skills/brainstorming/dynamic-questioning.md +350 -0
  76. package/skills/brainstorming/skill.yaml +3 -0
  77. package/skills/clean-code/SKILL.md +201 -0
  78. package/skills/clean-code/skill.yaml +3 -0
  79. package/skills/code-review-checklist/SKILL.md +109 -0
  80. package/skills/code-review-checklist/skill.yaml +3 -0
  81. package/skills/database-design/SKILL.md +52 -0
  82. package/skills/database-design/database-selection.md +43 -0
  83. package/skills/database-design/indexing.md +39 -0
  84. package/skills/database-design/migrations.md +48 -0
  85. package/skills/database-design/optimization.md +36 -0
  86. package/skills/database-design/orm-selection.md +30 -0
  87. package/skills/database-design/schema-design.md +56 -0
  88. package/skills/database-design/scripts/schema_validator.py +172 -0
  89. package/skills/database-design/skill.yaml +3 -0
  90. package/skills/frontend-design/SKILL.md +452 -0
  91. package/skills/frontend-design/animation-guide.md +331 -0
  92. package/skills/frontend-design/color-system.md +311 -0
  93. package/skills/frontend-design/decision-trees.md +418 -0
  94. package/skills/frontend-design/motion-graphics.md +306 -0
  95. package/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  96. package/skills/frontend-design/scripts/ux_audit.py +722 -0
  97. package/skills/frontend-design/skill.yaml +3 -0
  98. package/skills/frontend-design/typography-system.md +345 -0
  99. package/skills/frontend-design/ux-psychology.md +1116 -0
  100. package/skills/frontend-design/visual-effects.md +383 -0
  101. package/skills/mcp-builder/SKILL.md +176 -0
  102. package/skills/mcp-builder/skill.yaml +3 -0
  103. package/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +351 -0
  104. package/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  105. package/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  106. package/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  107. package/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  108. package/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  109. package/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  110. package/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  111. package/skills/nextjs-react-expert/9-cache-components.md +103 -0
  112. package/skills/nextjs-react-expert/SKILL.md +293 -0
  113. package/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  114. package/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  115. package/skills/nextjs-react-expert/skill.yaml +3 -0
  116. package/skills/nodejs-best-practices/SKILL.md +333 -0
  117. package/skills/nodejs-best-practices/skill.yaml +3 -0
  118. package/skills/parallel-agents/SKILL.md +175 -0
  119. package/skills/parallel-agents/skill.yaml +3 -0
  120. package/skills/powershell-windows/SKILL.md +167 -0
  121. package/skills/powershell-windows/skill.yaml +3 -0
  122. package/skills/python-patterns/SKILL.md +441 -0
  123. package/skills/python-patterns/skill.yaml +3 -0
  124. package/skills/seo-fundamentals/SKILL.md +129 -0
  125. package/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  126. package/skills/seo-fundamentals/skill.yaml +3 -0
  127. package/skills/systematic-debugging/SKILL.md +109 -0
  128. package/skills/systematic-debugging/skill.yaml +3 -0
  129. package/skills/tdd-workflow/SKILL.md +149 -0
  130. package/skills/tdd-workflow/skill.yaml +3 -0
  131. package/skills/vulnerability-scanner/SKILL.md +276 -0
  132. package/skills/vulnerability-scanner/checklists.md +121 -0
  133. package/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  134. package/skills/vulnerability-scanner/skill.yaml +3 -0
  135. package/skills/web-design-guidelines/SKILL.md +57 -0
  136. package/skills/web-design-guidelines/skill.yaml +3 -0
  137. package/skills/webapp-testing/SKILL.md +187 -0
  138. package/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  139. package/skills/webapp-testing/skill.yaml +3 -0
  140. package/workflows/brainstorm.md +113 -0
  141. package/workflows/create.md +59 -0
  142. package/workflows/debug.md +103 -0
  143. package/workflows/deploy.md +176 -0
  144. package/workflows/enhance.md +63 -0
  145. package/workflows/orchestrate.md +237 -0
  146. package/workflows/plan.md +89 -0
  147. package/workflows/preview.md +81 -0
  148. package/workflows/status.md +86 -0
  149. package/workflows/test.md +144 -0
  150. package/workflows/ui-ux-pro-max.md +296 -0
@@ -0,0 +1,37 @@
1
+ # Response Format Principles
2
+
3
+ > Consistency is key - choose a format and stick to it.
4
+
5
+ ## Common Patterns
6
+
7
+ ```
8
+ Choose one:
9
+ ├── Envelope pattern ({ success, data, error })
10
+ ├── Direct data (just return the resource)
11
+ └── HAL/JSON:API (hypermedia)
12
+ ```
13
+
14
+ ## Error Response
15
+
16
+ ```
17
+ Include:
18
+ ├── Error code (for programmatic handling)
19
+ ├── User message (for display)
20
+ ├── Details (for debugging, field-level errors)
21
+ ├── Request ID (for support)
22
+ └── NOT internal details (security!)
23
+ ```
24
+
25
+ ## Pagination Types
26
+
27
+ | Type | Best For | Trade-offs |
28
+ |------|----------|------------|
29
+ | **Offset** | Simple, jumpable | Performance on large datasets |
30
+ | **Cursor** | Large datasets | Can't jump to page |
31
+ | **Keyset** | Performance critical | Requires sortable key |
32
+
33
+ ### Selection Questions
34
+
35
+ 1. How large is the dataset?
36
+ 2. Do users need to jump to specific pages?
37
+ 3. Is data frequently changing?
@@ -0,0 +1,40 @@
1
+ # REST Principles
2
+
3
+ > Resource-based API design - nouns not verbs.
4
+
5
+ ## Resource Naming Rules
6
+
7
+ ```
8
+ Principles:
9
+ ├── Use NOUNS, not verbs (resources, not actions)
10
+ ├── Use PLURAL forms (/users not /user)
11
+ ├── Use lowercase with hyphens (/user-profiles)
12
+ ├── Nest for relationships (/users/123/posts)
13
+ └── Keep shallow (max 3 levels deep)
14
+ ```
15
+
16
+ ## HTTP Method Selection
17
+
18
+ | Method | Purpose | Idempotent? | Body? |
19
+ |--------|---------|-------------|-------|
20
+ | **GET** | Read resource(s) | Yes | No |
21
+ | **POST** | Create new resource | No | Yes |
22
+ | **PUT** | Replace entire resource | Yes | Yes |
23
+ | **PATCH** | Partial update | No | Yes |
24
+ | **DELETE** | Remove resource | Yes | No |
25
+
26
+ ## Status Code Selection
27
+
28
+ | Situation | Code | Why |
29
+ |-----------|------|-----|
30
+ | Success (read) | 200 | Standard success |
31
+ | Created | 201 | New resource created |
32
+ | No content | 204 | Success, nothing to return |
33
+ | Bad request | 400 | Malformed request |
34
+ | Unauthorized | 401 | Missing/invalid auth |
35
+ | Forbidden | 403 | Valid auth, no permission |
36
+ | Not found | 404 | Resource doesn't exist |
37
+ | Conflict | 409 | State conflict (duplicate) |
38
+ | Validation error | 422 | Valid syntax, invalid data |
39
+ | Rate limited | 429 | Too many requests |
40
+ | Server error | 500 | Our fault |
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ API Validator - Checks API endpoints for best practices.
4
+ Validates OpenAPI specs, response formats, and common issues.
5
+ """
6
+ import sys
7
+ import json
8
+ import re
9
+ from pathlib import Path
10
+
11
+ # Fix Windows console encoding for Unicode output
12
+ try:
13
+ sys.stdout.reconfigure(encoding='utf-8', errors='replace')
14
+ sys.stderr.reconfigure(encoding='utf-8', errors='replace')
15
+ except AttributeError:
16
+ pass # Python < 3.7
17
+
18
+ def find_api_files(project_path: Path) -> list:
19
+ """Find API-related files."""
20
+ patterns = [
21
+ "**/*api*.ts", "**/*api*.js", "**/*api*.py",
22
+ "**/routes/*.ts", "**/routes/*.js", "**/routes/*.py",
23
+ "**/controllers/*.ts", "**/controllers/*.js",
24
+ "**/endpoints/*.ts", "**/endpoints/*.py",
25
+ "**/*.openapi.json", "**/*.openapi.yaml",
26
+ "**/swagger.json", "**/swagger.yaml",
27
+ "**/openapi.json", "**/openapi.yaml"
28
+ ]
29
+
30
+ files = []
31
+ for pattern in patterns:
32
+ files.extend(project_path.glob(pattern))
33
+
34
+ # Exclude node_modules, etc.
35
+ return [f for f in files if not any(x in str(f) for x in ['node_modules', '.git', 'dist', 'build', '__pycache__'])]
36
+
37
+ def check_openapi_spec(file_path: Path) -> dict:
38
+ """Check OpenAPI/Swagger specification."""
39
+ issues = []
40
+ passed = []
41
+
42
+ try:
43
+ content = file_path.read_text(encoding='utf-8')
44
+
45
+ if file_path.suffix == '.json':
46
+ spec = json.loads(content)
47
+ else:
48
+ # Basic YAML check
49
+ if 'openapi:' in content or 'swagger:' in content:
50
+ passed.append("[OK] OpenAPI/Swagger version defined")
51
+ else:
52
+ issues.append("[X] No OpenAPI version found")
53
+
54
+ if 'paths:' in content:
55
+ passed.append("[OK] Paths section exists")
56
+ else:
57
+ issues.append("[X] No paths defined")
58
+
59
+ if 'components:' in content or 'definitions:' in content:
60
+ passed.append("[OK] Schema components defined")
61
+
62
+ return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'openapi'}
63
+
64
+ # JSON OpenAPI checks
65
+ if 'openapi' in spec or 'swagger' in spec:
66
+ passed.append("[OK] OpenAPI version defined")
67
+
68
+ if 'info' in spec:
69
+ if 'title' in spec['info']:
70
+ passed.append("[OK] API title defined")
71
+ if 'version' in spec['info']:
72
+ passed.append("[OK] API version defined")
73
+ if 'description' not in spec['info']:
74
+ issues.append("[!] API description missing")
75
+
76
+ if 'paths' in spec:
77
+ path_count = len(spec['paths'])
78
+ passed.append(f"[OK] {path_count} endpoints defined")
79
+
80
+ # Check each path
81
+ for path, methods in spec['paths'].items():
82
+ for method, details in methods.items():
83
+ if method in ['get', 'post', 'put', 'patch', 'delete']:
84
+ if 'responses' not in details:
85
+ issues.append(f"[X] {method.upper()} {path}: No responses defined")
86
+ if 'summary' not in details and 'description' not in details:
87
+ issues.append(f"[!] {method.upper()} {path}: No description")
88
+
89
+ except Exception as e:
90
+ issues.append(f"[X] Parse error: {e}")
91
+
92
+ return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'openapi'}
93
+
94
+ def check_api_code(file_path: Path) -> dict:
95
+ """Check API code for common issues."""
96
+ issues = []
97
+ passed = []
98
+
99
+ try:
100
+ content = file_path.read_text(encoding='utf-8')
101
+
102
+ # Check for error handling
103
+ error_patterns = [
104
+ r'try\s*{', r'try:', r'\.catch\(',
105
+ r'except\s+', r'catch\s*\('
106
+ ]
107
+ has_error_handling = any(re.search(p, content) for p in error_patterns)
108
+ if has_error_handling:
109
+ passed.append("[OK] Error handling present")
110
+ else:
111
+ issues.append("[X] No error handling found")
112
+
113
+ # Check for status codes
114
+ status_patterns = [
115
+ r'status\s*\(\s*\d{3}\s*\)', r'statusCode\s*[=:]\s*\d{3}',
116
+ r'HttpStatus\.', r'status_code\s*=\s*\d{3}',
117
+ r'\.status\(\d{3}\)', r'res\.status\('
118
+ ]
119
+ has_status = any(re.search(p, content) for p in status_patterns)
120
+ if has_status:
121
+ passed.append("[OK] HTTP status codes used")
122
+ else:
123
+ issues.append("[!] No explicit HTTP status codes")
124
+
125
+ # Check for validation
126
+ validation_patterns = [
127
+ r'validate', r'schema', r'zod', r'joi', r'yup',
128
+ r'pydantic', r'@Body\(', r'@Query\('
129
+ ]
130
+ has_validation = any(re.search(p, content, re.I) for p in validation_patterns)
131
+ if has_validation:
132
+ passed.append("[OK] Input validation present")
133
+ else:
134
+ issues.append("[!] No input validation detected")
135
+
136
+ # Check for auth middleware
137
+ auth_patterns = [
138
+ r'auth', r'jwt', r'bearer', r'token',
139
+ r'middleware', r'guard', r'@Authenticated'
140
+ ]
141
+ has_auth = any(re.search(p, content, re.I) for p in auth_patterns)
142
+ if has_auth:
143
+ passed.append("[OK] Authentication/authorization detected")
144
+
145
+ # Check for rate limiting
146
+ rate_patterns = [r'rateLimit', r'throttle', r'rate.?limit']
147
+ has_rate = any(re.search(p, content, re.I) for p in rate_patterns)
148
+ if has_rate:
149
+ passed.append("[OK] Rate limiting present")
150
+
151
+ # Check for logging
152
+ log_patterns = [r'console\.log', r'logger\.', r'logging\.', r'log\.']
153
+ has_logging = any(re.search(p, content) for p in log_patterns)
154
+ if has_logging:
155
+ passed.append("[OK] Logging present")
156
+
157
+ except Exception as e:
158
+ issues.append(f"[X] Read error: {e}")
159
+
160
+ return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'code'}
161
+
162
+ def main():
163
+ target = sys.argv[1] if len(sys.argv) > 1 else "."
164
+ project_path = Path(target)
165
+
166
+ print("\n" + "=" * 60)
167
+ print(" API VALIDATOR - Endpoint Best Practices Check")
168
+ print("=" * 60 + "\n")
169
+
170
+ api_files = find_api_files(project_path)
171
+
172
+ if not api_files:
173
+ print("[!] No API files found.")
174
+ print(" Looking for: routes/, controllers/, api/, openapi.json/yaml")
175
+ sys.exit(0)
176
+
177
+ results = []
178
+ for file_path in api_files[:15]: # Limit
179
+ if 'openapi' in file_path.name.lower() or 'swagger' in file_path.name.lower():
180
+ result = check_openapi_spec(file_path)
181
+ else:
182
+ result = check_api_code(file_path)
183
+ results.append(result)
184
+
185
+ # Print results
186
+ total_issues = 0
187
+ total_passed = 0
188
+
189
+ for result in results:
190
+ print(f"\n[FILE] {result['file']} [{result['type']}]")
191
+ for item in result['passed']:
192
+ print(f" {item}")
193
+ total_passed += 1
194
+ for item in result['issues']:
195
+ print(f" {item}")
196
+ if item.startswith("[X]"):
197
+ total_issues += 1
198
+
199
+ print("\n" + "=" * 60)
200
+ print(f"[RESULTS] {total_passed} passed, {total_issues} critical issues")
201
+ print("=" * 60)
202
+
203
+ if total_issues == 0:
204
+ print("[OK] API validation passed")
205
+ sys.exit(0)
206
+ else:
207
+ print("[X] Fix critical issues before deployment")
208
+ sys.exit(1)
209
+
210
+ if __name__ == "__main__":
211
+ main()
@@ -0,0 +1,122 @@
1
+ # API Security Testing
2
+
3
+ > Principles for testing API security. OWASP API Top 10, authentication, authorization testing.
4
+
5
+ ---
6
+
7
+ ## OWASP API Security Top 10
8
+
9
+ | Vulnerability | Test Focus |
10
+ |---------------|------------|
11
+ | **API1: BOLA** | Access other users' resources |
12
+ | **API2: Broken Auth** | JWT, session, credentials |
13
+ | **API3: Property Auth** | Mass assignment, data exposure |
14
+ | **API4: Resource Consumption** | Rate limiting, DoS |
15
+ | **API5: Function Auth** | Admin endpoints, role bypass |
16
+ | **API6: Business Flow** | Logic abuse, automation |
17
+ | **API7: SSRF** | Internal network access |
18
+ | **API8: Misconfiguration** | Debug endpoints, CORS |
19
+ | **API9: Inventory** | Shadow APIs, old versions |
20
+ | **API10: Unsafe Consumption** | Third-party API trust |
21
+
22
+ ---
23
+
24
+ ## Authentication Testing
25
+
26
+ ### JWT Testing
27
+
28
+ | Check | What to Test |
29
+ |-------|--------------|
30
+ | Algorithm | None, algorithm confusion |
31
+ | Secret | Weak secrets, brute force |
32
+ | Claims | Expiration, issuer, audience |
33
+ | Signature | Manipulation, key injection |
34
+
35
+ ### Session Testing
36
+
37
+ | Check | What to Test |
38
+ |-------|--------------|
39
+ | Generation | Predictability |
40
+ | Storage | Client-side security |
41
+ | Expiration | Timeout enforcement |
42
+ | Invalidation | Logout effectiveness |
43
+
44
+ ---
45
+
46
+ ## Authorization Testing
47
+
48
+ | Test Type | Approach |
49
+ |-----------|----------|
50
+ | **Horizontal** | Access peer users' data |
51
+ | **Vertical** | Access higher privilege functions |
52
+ | **Context** | Access outside allowed scope |
53
+
54
+ ### BOLA/IDOR Testing
55
+
56
+ 1. Identify resource IDs in requests
57
+ 2. Capture request with user A's session
58
+ 3. Replay with user B's session
59
+ 4. Check for unauthorized access
60
+
61
+ ---
62
+
63
+ ## Input Validation Testing
64
+
65
+ | Injection Type | Test Focus |
66
+ |----------------|------------|
67
+ | SQL | Query manipulation |
68
+ | NoSQL | Document queries |
69
+ | Command | System commands |
70
+ | LDAP | Directory queries |
71
+
72
+ **Approach:** Test all parameters, try type coercion, test boundaries, check error messages.
73
+
74
+ ---
75
+
76
+ ## Rate Limiting Testing
77
+
78
+ | Aspect | Check |
79
+ |--------|-------|
80
+ | Existence | Is there any limit? |
81
+ | Bypass | Headers, IP rotation |
82
+ | Scope | Per-user, per-IP, global |
83
+
84
+ **Bypass techniques:** X-Forwarded-For, different HTTP methods, case variations, API versioning.
85
+
86
+ ---
87
+
88
+ ## GraphQL Security
89
+
90
+ | Test | Focus |
91
+ |------|-------|
92
+ | Introspection | Schema disclosure |
93
+ | Batching | Query DoS |
94
+ | Nesting | Depth-based DoS |
95
+ | Authorization | Field-level access |
96
+
97
+ ---
98
+
99
+ ## Security Testing Checklist
100
+
101
+ **Authentication:**
102
+ - [ ] Test for bypass
103
+ - [ ] Check credential strength
104
+ - [ ] Verify token security
105
+
106
+ **Authorization:**
107
+ - [ ] Test BOLA/IDOR
108
+ - [ ] Check privilege escalation
109
+ - [ ] Verify function access
110
+
111
+ **Input:**
112
+ - [ ] Test all parameters
113
+ - [ ] Check for injection
114
+
115
+ **Config:**
116
+ - [ ] Check CORS
117
+ - [ ] Verify headers
118
+ - [ ] Test error handling
119
+
120
+ ---
121
+
122
+ > **Remember:** APIs are the backbone of modern apps. Test them like attackers will.
@@ -0,0 +1,3 @@
1
+ name: api-patterns
2
+ description: API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.
3
+ version: "1.0"
@@ -0,0 +1,41 @@
1
+ # tRPC Principles
2
+
3
+ > End-to-end type safety for TypeScript monorepos.
4
+
5
+ ## When to Use
6
+
7
+ ```
8
+ ✅ Perfect fit:
9
+ ├── TypeScript on both ends
10
+ ├── Monorepo structure
11
+ ├── Internal tools
12
+ ├── Rapid development
13
+ └── Type safety critical
14
+
15
+ ❌ Poor fit:
16
+ ├── Non-TypeScript clients
17
+ ├── Public API
18
+ ├── Need REST conventions
19
+ └── Multiple language backends
20
+ ```
21
+
22
+ ## Key Benefits
23
+
24
+ ```
25
+ Why tRPC:
26
+ ├── Zero schema maintenance
27
+ ├── End-to-end type inference
28
+ ├── IDE autocomplete across stack
29
+ ├── Instant API changes reflected
30
+ └── No code generation step
31
+ ```
32
+
33
+ ## Integration Patterns
34
+
35
+ ```
36
+ Common setups:
37
+ ├── Next.js + tRPC (most common)
38
+ ├── Monorepo with shared types
39
+ ├── Remix + tRPC
40
+ └── Any TS frontend + backend
41
+ ```
@@ -0,0 +1,22 @@
1
+ # Versioning Strategies
2
+
3
+ > Plan for API evolution from day one.
4
+
5
+ ## Decision Factors
6
+
7
+ | Strategy | Implementation | Trade-offs |
8
+ |----------|---------------|------------|
9
+ | **URI** | /v1/users | Clear, easy caching |
10
+ | **Header** | Accept-Version: 1 | Cleaner URLs, harder discovery |
11
+ | **Query** | ?version=1 | Easy to add, messy |
12
+ | **None** | Evolve carefully | Best for internal, risky for public |
13
+
14
+ ## Versioning Philosophy
15
+
16
+ ```
17
+ Consider:
18
+ ├── Public API? → Version in URI
19
+ ├── Internal only? → May not need versioning
20
+ ├── GraphQL? → Typically no versions (evolve schema)
21
+ ├── tRPC? → Types enforce compatibility
22
+ ```
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: architecture
3
+ description: Architectural decision-making framework. Requirements analysis, trade-off evaluation, ADR documentation. Use when making architecture decisions or analyzing system design.
4
+ allowed-tools: Read, Glob, Grep
5
+ ---
6
+
7
+ # Architecture Decision Framework
8
+
9
+ > "Requirements drive architecture. Trade-offs inform decisions. ADRs capture rationale."
10
+
11
+ ## 🎯 Selective Reading Rule
12
+
13
+ **Read ONLY files relevant to the request!** Check the content map, find what you need.
14
+
15
+ | File | Description | When to Read |
16
+ |------|-------------|--------------|
17
+ | `context-discovery.md` | Questions to ask, project classification | Starting architecture design |
18
+ | `trade-off-analysis.md` | ADR templates, trade-off framework | Documenting decisions |
19
+ | `pattern-selection.md` | Decision trees, anti-patterns | Choosing patterns |
20
+ | `examples.md` | MVP, SaaS, Enterprise examples | Reference implementations |
21
+ | `patterns-reference.md` | Quick lookup for patterns | Pattern comparison |
22
+
23
+ ---
24
+
25
+ ## 🔗 Related Skills
26
+
27
+ | Skill | Use For |
28
+ |-------|---------|
29
+ | `@[skills/database-design]` | Database schema design |
30
+ | `@[skills/api-patterns]` | API design patterns |
31
+ | `@[skills/deployment-procedures]` | Deployment architecture |
32
+
33
+ ---
34
+
35
+ ## Core Principle
36
+
37
+ **"Simplicity is the ultimate sophistication."**
38
+
39
+ - Start simple
40
+ - Add complexity ONLY when proven necessary
41
+ - You can always add patterns later
42
+ - Removing complexity is MUCH harder than adding it
43
+
44
+ ---
45
+
46
+ ## Validation Checklist
47
+
48
+ Before finalizing architecture:
49
+
50
+ - [ ] Requirements clearly understood
51
+ - [ ] Constraints identified
52
+ - [ ] Each decision has trade-off analysis
53
+ - [ ] Simpler alternatives considered
54
+ - [ ] ADRs written for significant decisions
55
+ - [ ] Team expertise matches chosen patterns
@@ -0,0 +1,43 @@
1
+ # Context Discovery
2
+
3
+ > Before suggesting any architecture, gather context.
4
+
5
+ ## Question Hierarchy (Ask User FIRST)
6
+
7
+ 1. **Scale**
8
+ - How many users? (10, 1K, 100K, 1M+)
9
+ - Data volume? (MB, GB, TB)
10
+ - Transaction rate? (per second/minute)
11
+
12
+ 2. **Team**
13
+ - Solo developer or team?
14
+ - Team size and expertise?
15
+ - Distributed or co-located?
16
+
17
+ 3. **Timeline**
18
+ - MVP/Prototype or long-term product?
19
+ - Time to market pressure?
20
+
21
+ 4. **Domain**
22
+ - CRUD-heavy or business logic complex?
23
+ - Real-time requirements?
24
+ - Compliance/regulations?
25
+
26
+ 5. **Constraints**
27
+ - Budget limitations?
28
+ - Legacy systems to integrate?
29
+ - Technology stack preferences?
30
+
31
+ ## Project Classification Matrix
32
+
33
+ ```
34
+ MVP SaaS Enterprise
35
+ ┌─────────────────────────────────────────────────────────────┐
36
+ │ Scale │ <1K │ 1K-100K │ 100K+ │
37
+ │ Team │ Solo │ 2-10 │ 10+ │
38
+ │ Timeline │ Fast (weeks) │ Medium (months)│ Long (years)│
39
+ │ Architecture │ Simple │ Modular │ Distributed │
40
+ │ Patterns │ Minimal │ Selective │ Comprehensive│
41
+ │ Example │ Next.js API │ NestJS │ Microservices│
42
+ └─────────────────────────────────────────────────────────────┘
43
+ ```
@@ -0,0 +1,94 @@
1
+ # Architecture Examples
2
+
3
+ > Real-world architecture decisions by project type.
4
+
5
+ ---
6
+
7
+ ## Example 1: MVP E-commerce (Solo Developer)
8
+
9
+ ```yaml
10
+ Requirements:
11
+ - <1000 users initially
12
+ - Solo developer
13
+ - Fast to market (8 weeks)
14
+ - Budget-conscious
15
+
16
+ Architecture Decisions:
17
+ App Structure: Monolith (simpler for solo)
18
+ Framework: Next.js (full-stack, fast)
19
+ Data Layer: Prisma direct (no over-abstraction)
20
+ Authentication: JWT (simpler than OAuth)
21
+ Payment: Stripe (hosted solution)
22
+ Database: PostgreSQL (ACID for orders)
23
+
24
+ Trade-offs Accepted:
25
+ - Monolith → Can't scale independently (team doesn't justify it)
26
+ - No Repository → Less testable (simple CRUD doesn't need it)
27
+ - JWT → No social login initially (can add later)
28
+
29
+ Future Migration Path:
30
+ - Users > 10K → Extract payment service
31
+ - Team > 3 → Add Repository pattern
32
+ - Social login requested → Add OAuth
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Example 2: SaaS Product (5-10 Developers)
38
+
39
+ ```yaml
40
+ Requirements:
41
+ - 1K-100K users
42
+ - 5-10 developers
43
+ - Long-term (12+ months)
44
+ - Multiple domains (billing, users, core)
45
+
46
+ Architecture Decisions:
47
+ App Structure: Modular Monolith (team size optimal)
48
+ Framework: NestJS (modular by design)
49
+ Data Layer: Repository pattern (testing, flexibility)
50
+ Domain Model: Partial DDD (rich entities)
51
+ Authentication: OAuth + JWT
52
+ Caching: Redis
53
+ Database: PostgreSQL
54
+
55
+ Trade-offs Accepted:
56
+ - Modular Monolith → Some module coupling (microservices not justified)
57
+ - Partial DDD → No full aggregates (no domain experts)
58
+ - RabbitMQ later → Initial synchronous (add when proven needed)
59
+
60
+ Migration Path:
61
+ - Team > 10 → Consider microservices
62
+ - Domains conflict → Extract bounded contexts
63
+ - Read performance issues → Add CQRS
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Example 3: Enterprise (100K+ Users)
69
+
70
+ ```yaml
71
+ Requirements:
72
+ - 100K+ users
73
+ - 10+ developers
74
+ - Multiple business domains
75
+ - Different scaling needs
76
+ - 24/7 availability
77
+
78
+ Architecture Decisions:
79
+ App Structure: Microservices (independent scale)
80
+ API Gateway: Kong/AWS API GW
81
+ Domain Model: Full DDD
82
+ Consistency: Event-driven (eventual OK)
83
+ Message Bus: Kafka
84
+ Authentication: OAuth + SAML (enterprise SSO)
85
+ Database: Polyglot (right tool per job)
86
+ CQRS: Selected services
87
+
88
+ Operational Requirements:
89
+ - Service mesh (Istio/Linkerd)
90
+ - Distributed tracing (Jaeger/Tempo)
91
+ - Centralized logging (ELK/Loki)
92
+ - Circuit breakers (Resilience4j)
93
+ - Kubernetes/Helm
94
+ ```