ai-flow-dev 2.7.0 → 2.8.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.
- package/LICENSE +21 -21
- package/README.md +573 -570
- package/package.json +74 -74
- package/prompts/backend/flow-build-phase-0.md +535 -535
- package/prompts/backend/flow-build-phase-1.md +626 -626
- package/prompts/backend/flow-build-phase-10.md +340 -340
- package/prompts/backend/flow-build-phase-2.md +573 -573
- package/prompts/backend/flow-build-phase-3.md +834 -834
- package/prompts/backend/flow-build-phase-4.md +554 -554
- package/prompts/backend/flow-build-phase-5.md +703 -703
- package/prompts/backend/flow-build-phase-6.md +524 -524
- package/prompts/backend/flow-build-phase-7.md +1001 -1001
- package/prompts/backend/flow-build-phase-8.md +1407 -1407
- package/prompts/backend/flow-build-phase-9.md +477 -477
- package/prompts/backend/flow-build.md +137 -137
- package/prompts/backend/flow-check-review.md +656 -20
- package/prompts/backend/flow-check-test.md +526 -14
- package/prompts/backend/flow-check.md +717 -67
- package/prompts/backend/flow-commit.md +88 -119
- package/prompts/backend/flow-docs-sync.md +354 -354
- package/prompts/backend/flow-finish.md +919 -0
- package/prompts/backend/flow-release.md +949 -0
- package/prompts/backend/flow-work-feature.md +61 -61
- package/prompts/backend/flow-work-fix.md +46 -46
- package/prompts/backend/flow-work-refactor.md +48 -48
- package/prompts/backend/flow-work-resume.md +34 -34
- package/prompts/backend/flow-work.md +1098 -1286
- package/prompts/desktop/flow-build-phase-0.md +359 -359
- package/prompts/desktop/flow-build-phase-1.md +295 -295
- package/prompts/desktop/flow-build-phase-10.md +357 -357
- package/prompts/desktop/flow-build-phase-2.md +282 -282
- package/prompts/desktop/flow-build-phase-3.md +291 -291
- package/prompts/desktop/flow-build-phase-4.md +308 -308
- package/prompts/desktop/flow-build-phase-5.md +269 -269
- package/prompts/desktop/flow-build-phase-6.md +350 -350
- package/prompts/desktop/flow-build-phase-7.md +297 -297
- package/prompts/desktop/flow-build-phase-8.md +541 -541
- package/prompts/desktop/flow-build-phase-9.md +439 -439
- package/prompts/desktop/flow-build.md +156 -156
- package/prompts/desktop/flow-check-review.md +656 -20
- package/prompts/desktop/flow-check-test.md +526 -14
- package/prompts/desktop/flow-check.md +717 -67
- package/prompts/desktop/flow-commit.md +88 -119
- package/prompts/desktop/flow-docs-sync.md +354 -354
- package/prompts/desktop/flow-finish.md +919 -0
- package/prompts/desktop/flow-release.md +662 -0
- package/prompts/desktop/flow-work-feature.md +61 -61
- package/prompts/desktop/flow-work-fix.md +46 -46
- package/prompts/desktop/flow-work-refactor.md +48 -48
- package/prompts/desktop/flow-work-resume.md +34 -34
- package/prompts/desktop/flow-work.md +1202 -1390
- package/prompts/frontend/flow-build-phase-0.md +425 -425
- package/prompts/frontend/flow-build-phase-1.md +626 -626
- package/prompts/frontend/flow-build-phase-10.md +33 -33
- package/prompts/frontend/flow-build-phase-2.md +573 -573
- package/prompts/frontend/flow-build-phase-3.md +782 -782
- package/prompts/frontend/flow-build-phase-4.md +554 -554
- package/prompts/frontend/flow-build-phase-5.md +703 -703
- package/prompts/frontend/flow-build-phase-6.md +524 -524
- package/prompts/frontend/flow-build-phase-7.md +1001 -1001
- package/prompts/frontend/flow-build-phase-8.md +872 -872
- package/prompts/frontend/flow-build-phase-9.md +94 -94
- package/prompts/frontend/flow-build.md +137 -137
- package/prompts/frontend/flow-check-review.md +656 -20
- package/prompts/frontend/flow-check-test.md +526 -14
- package/prompts/frontend/flow-check.md +717 -67
- package/prompts/frontend/flow-commit.md +88 -119
- package/prompts/frontend/flow-docs-sync.md +550 -550
- package/prompts/frontend/flow-finish.md +919 -0
- package/prompts/frontend/flow-release.md +519 -0
- package/prompts/frontend/flow-work-api.md +1547 -0
- package/prompts/frontend/flow-work-feature.md +61 -61
- package/prompts/frontend/flow-work-fix.md +38 -38
- package/prompts/frontend/flow-work-refactor.md +48 -48
- package/prompts/frontend/flow-work-resume.md +34 -34
- package/prompts/frontend/flow-work.md +1595 -1320
- package/prompts/mobile/flow-build-phase-0.md +425 -425
- package/prompts/mobile/flow-build-phase-1.md +626 -626
- package/prompts/mobile/flow-build-phase-10.md +32 -32
- package/prompts/mobile/flow-build-phase-2.md +573 -573
- package/prompts/mobile/flow-build-phase-3.md +782 -782
- package/prompts/mobile/flow-build-phase-4.md +554 -554
- package/prompts/mobile/flow-build-phase-5.md +703 -703
- package/prompts/mobile/flow-build-phase-6.md +524 -524
- package/prompts/mobile/flow-build-phase-7.md +1001 -1001
- package/prompts/mobile/flow-build-phase-8.md +888 -888
- package/prompts/mobile/flow-build-phase-9.md +90 -90
- package/prompts/mobile/flow-build.md +135 -135
- package/prompts/mobile/flow-check-review.md +656 -20
- package/prompts/mobile/flow-check-test.md +526 -14
- package/prompts/mobile/flow-check.md +717 -67
- package/prompts/mobile/flow-commit.md +88 -119
- package/prompts/mobile/flow-docs-sync.md +620 -620
- package/prompts/mobile/flow-finish.md +919 -0
- package/prompts/mobile/flow-release.md +751 -0
- package/prompts/mobile/flow-work-api.md +1500 -0
- package/prompts/mobile/flow-work-feature.md +61 -61
- package/prompts/mobile/flow-work-fix.md +46 -46
- package/prompts/mobile/flow-work-refactor.md +48 -48
- package/prompts/mobile/flow-work-resume.md +34 -34
- package/prompts/mobile/flow-work.md +1605 -1329
- package/prompts/shared/mermaid-guidelines.md +102 -102
- package/prompts/shared/scope-levels.md +114 -114
- package/prompts/shared/smart-skip-preflight.md +214 -214
- package/prompts/shared/story-points.md +55 -55
- package/prompts/shared/task-format.md +74 -74
- package/prompts/shared/task-summary-template.md +277 -277
- package/templates/AGENT.template.md +443 -443
- package/templates/backend/.clauderules.template +112 -112
- package/templates/backend/.cursorrules.template +102 -102
- package/templates/backend/README.template.md +2 -2
- package/templates/backend/ai-instructions.template.md +2 -2
- package/templates/backend/copilot-instructions.template.md +2 -2
- package/templates/backend/docs/api.template.md +320 -320
- package/templates/backend/docs/business-flows.template.md +97 -97
- package/templates/backend/docs/code-standards.template.md +2 -2
- package/templates/backend/docs/contributing.template.md +3 -3
- package/templates/backend/docs/data-model.template.md +520 -520
- package/templates/backend/docs/testing.template.md +2 -2
- package/templates/backend/project-brief.template.md +2 -2
- package/templates/backend/specs/configuration.template.md +2 -2
- package/templates/backend/specs/security.template.md +2 -2
- package/templates/desktop/.clauderules.template +112 -112
- package/templates/desktop/.cursorrules.template +102 -102
- package/templates/desktop/README.template.md +170 -170
- package/templates/desktop/ai-instructions.template.md +366 -366
- package/templates/desktop/copilot-instructions.template.md +140 -140
- package/templates/desktop/docs/docs/api.template.md +320 -320
- package/templates/desktop/docs/docs/architecture.template.md +724 -724
- package/templates/desktop/docs/docs/business-flows.template.md +102 -102
- package/templates/desktop/docs/docs/code-standards.template.md +792 -792
- package/templates/desktop/docs/docs/contributing.template.md +149 -149
- package/templates/desktop/docs/docs/data-model.template.md +520 -520
- package/templates/desktop/docs/docs/operations.template.md +720 -720
- package/templates/desktop/docs/docs/testing.template.md +722 -722
- package/templates/desktop/project-brief.template.md +150 -150
- package/templates/desktop/specs/specs/configuration.template.md +121 -121
- package/templates/desktop/specs/specs/security.template.md +392 -392
- package/templates/frontend/README.template.md +2 -2
- package/templates/frontend/ai-instructions.template.md +2 -2
- package/templates/frontend/docs/api-integration.template.md +362 -362
- package/templates/frontend/docs/components.template.md +2 -2
- package/templates/frontend/docs/error-handling.template.md +360 -360
- package/templates/frontend/docs/operations.template.md +107 -107
- package/templates/frontend/docs/performance.template.md +124 -124
- package/templates/frontend/docs/pwa.template.md +119 -119
- package/templates/frontend/docs/state-management.template.md +2 -2
- package/templates/frontend/docs/styling.template.md +2 -2
- package/templates/frontend/docs/testing.template.md +2 -2
- package/templates/frontend/project-brief.template.md +2 -2
- package/templates/frontend/specs/accessibility.template.md +95 -95
- package/templates/frontend/specs/configuration.template.md +2 -2
- package/templates/frontend/specs/security.template.md +175 -175
- package/templates/fullstack/README.template.md +252 -252
- package/templates/fullstack/ai-instructions.template.md +444 -444
- package/templates/fullstack/project-brief.template.md +157 -157
- package/templates/fullstack/specs/configuration.template.md +340 -340
- package/templates/mobile/README.template.md +167 -167
- package/templates/mobile/ai-instructions.template.md +196 -196
- package/templates/mobile/docs/app-store.template.md +135 -135
- package/templates/mobile/docs/architecture.template.md +63 -63
- package/templates/mobile/docs/native-features.template.md +94 -94
- package/templates/mobile/docs/navigation.template.md +59 -59
- package/templates/mobile/docs/offline-strategy.template.md +65 -65
- package/templates/mobile/docs/permissions.template.md +56 -56
- package/templates/mobile/docs/state-management.template.md +85 -85
- package/templates/mobile/docs/testing.template.md +109 -109
- package/templates/mobile/project-brief.template.md +69 -69
- package/templates/mobile/specs/build-configuration.template.md +91 -91
- package/templates/mobile/specs/deployment.template.md +92 -92
- package/templates/work.template.md +61 -47
|
@@ -1,183 +1,183 @@
|
|
|
1
|
-
# Security Specification
|
|
2
|
-
|
|
3
|
-
> Frontend security requirements and best practices for {{PROJECT_NAME}}
|
|
1
|
+
# Security Specification
|
|
2
|
+
|
|
3
|
+
> Frontend security requirements and best practices for {{PROJECT_NAME}}
|
|
4
4
|
---
|
|
5
|
-
## 🎯 Security Strategy
|
|
6
|
-
|
|
7
|
-
**CSP:** {{CSP_ENABLED}}
|
|
8
|
-
**XSS Prevention:** {{XSS_PREVENTION}}
|
|
9
|
-
**Secure Storage:** {{SECURE_STORAGE}}
|
|
10
|
-
**HTTPS:** {{HTTPS_ENFORCEMENT}}
|
|
11
|
-
**Dependency Scanning:** {{DEPENDENCY_SCANNING}}
|
|
5
|
+
## 🎯 Security Strategy
|
|
6
|
+
|
|
7
|
+
**CSP:** {{CSP_ENABLED}}
|
|
8
|
+
**XSS Prevention:** {{XSS_PREVENTION}}
|
|
9
|
+
**Secure Storage:** {{SECURE_STORAGE}}
|
|
10
|
+
**HTTPS:** {{HTTPS_ENFORCEMENT}}
|
|
11
|
+
**Dependency Scanning:** {{DEPENDENCY_SCANNING}}
|
|
12
12
|
---
|
|
13
|
-
## 🛡️ Content Security Policy (CSP)
|
|
14
|
-
|
|
15
|
-
### CSP Configuration
|
|
16
|
-
|
|
17
|
-
```html
|
|
18
|
-
<!-- index.html -->
|
|
19
|
-
<meta http-equiv="Content-Security-Policy" content="
|
|
20
|
-
default-src 'self';
|
|
21
|
-
script-src 'self' 'unsafe-inline' https://cdn.example.com;
|
|
22
|
-
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
|
|
23
|
-
img-src 'self' data: https:;
|
|
24
|
-
font-src 'self' https://fonts.gstatic.com;
|
|
25
|
-
connect-src 'self' https://api.example.com;
|
|
26
|
-
frame-ancestors 'none';
|
|
27
|
-
">
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Strict CSP (Recommended)
|
|
31
|
-
|
|
32
|
-
```html
|
|
33
|
-
<meta http-equiv="Content-Security-Policy" content="
|
|
34
|
-
default-src 'self';
|
|
35
|
-
script-src 'self';
|
|
36
|
-
style-src 'self';
|
|
37
|
-
img-src 'self' data: https:;
|
|
38
|
-
font-src 'self';
|
|
39
|
-
connect-src 'self' https://api.example.com;
|
|
40
|
-
base-uri 'self';
|
|
41
|
-
form-action 'self';
|
|
42
|
-
frame-ancestors 'none';
|
|
43
|
-
upgrade-insecure-requests;
|
|
44
|
-
">
|
|
45
|
-
```
|
|
13
|
+
## 🛡️ Content Security Policy (CSP)
|
|
14
|
+
|
|
15
|
+
### CSP Configuration
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<!-- index.html -->
|
|
19
|
+
<meta http-equiv="Content-Security-Policy" content="
|
|
20
|
+
default-src 'self';
|
|
21
|
+
script-src 'self' 'unsafe-inline' https://cdn.example.com;
|
|
22
|
+
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
|
|
23
|
+
img-src 'self' data: https:;
|
|
24
|
+
font-src 'self' https://fonts.gstatic.com;
|
|
25
|
+
connect-src 'self' https://api.example.com;
|
|
26
|
+
frame-ancestors 'none';
|
|
27
|
+
">
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Strict CSP (Recommended)
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<meta http-equiv="Content-Security-Policy" content="
|
|
34
|
+
default-src 'self';
|
|
35
|
+
script-src 'self';
|
|
36
|
+
style-src 'self';
|
|
37
|
+
img-src 'self' data: https:;
|
|
38
|
+
font-src 'self';
|
|
39
|
+
connect-src 'self' https://api.example.com;
|
|
40
|
+
base-uri 'self';
|
|
41
|
+
form-action 'self';
|
|
42
|
+
frame-ancestors 'none';
|
|
43
|
+
upgrade-insecure-requests;
|
|
44
|
+
">
|
|
45
|
+
```
|
|
46
46
|
---
|
|
47
|
-
## 🔒 XSS Prevention
|
|
48
|
-
|
|
49
|
-
### Input Sanitization
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
// utils/sanitize.ts
|
|
53
|
-
import DOMPurify from 'dompurify';
|
|
54
|
-
|
|
55
|
-
export function sanitizeHtml(html: string): string {
|
|
56
|
-
return DOMPurify.sanitize(html, {
|
|
57
|
-
ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p', 'br'],
|
|
58
|
-
ALLOWED_ATTR: ['href'],
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Safe HTML Rendering
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
// React
|
|
67
|
-
<div dangerouslySetInnerHTML={{ __html: sanitizeHtml(userContent) }} />
|
|
68
|
-
|
|
69
|
-
// Vue
|
|
70
|
-
<div v-html="sanitizeHtml(userContent)" />
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### URL Validation
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
// utils/validateUrl.ts
|
|
77
|
-
export function isValidUrl(url: string): boolean {
|
|
78
|
-
try {
|
|
79
|
-
const parsed = new URL(url);
|
|
80
|
-
return ['http:', 'https:'].includes(parsed.protocol);
|
|
81
|
-
} catch {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
```
|
|
47
|
+
## 🔒 XSS Prevention
|
|
48
|
+
|
|
49
|
+
### Input Sanitization
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// utils/sanitize.ts
|
|
53
|
+
import DOMPurify from 'dompurify';
|
|
54
|
+
|
|
55
|
+
export function sanitizeHtml(html: string): string {
|
|
56
|
+
return DOMPurify.sanitize(html, {
|
|
57
|
+
ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p', 'br'],
|
|
58
|
+
ALLOWED_ATTR: ['href'],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Safe HTML Rendering
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// React
|
|
67
|
+
<div dangerouslySetInnerHTML={{ __html: sanitizeHtml(userContent) }} />
|
|
68
|
+
|
|
69
|
+
// Vue
|
|
70
|
+
<div v-html="sanitizeHtml(userContent)" />
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### URL Validation
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// utils/validateUrl.ts
|
|
77
|
+
export function isValidUrl(url: string): boolean {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = new URL(url);
|
|
80
|
+
return ['http:', 'https:'].includes(parsed.protocol);
|
|
81
|
+
} catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
86
|
---
|
|
87
|
-
## 🔐 Secure Storage
|
|
88
|
-
|
|
89
|
-
### Token Storage Strategy
|
|
90
|
-
|
|
91
|
-
**Option 1: httpOnly Cookies (Most Secure)**
|
|
92
|
-
|
|
93
|
-
```typescript
|
|
94
|
-
// Backend sets httpOnly cookie
|
|
95
|
-
// Frontend doesn't access token directly
|
|
96
|
-
// Token sent automatically with requests
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Option 2: Memory Storage**
|
|
100
|
-
|
|
101
|
-
```typescript
|
|
102
|
-
// utils/auth.ts
|
|
103
|
-
let authToken: string | null = null;
|
|
104
|
-
|
|
105
|
-
export function setToken(token: string): void {
|
|
106
|
-
authToken = token; // Stored in memory only
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export function getToken(): string | null {
|
|
110
|
-
return authToken;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export function clearToken(): void {
|
|
114
|
-
authToken = null;
|
|
115
|
-
}
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Option 3: localStorage (Less Secure)**
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
// Only for non-sensitive data
|
|
122
|
-
// Never store sensitive tokens in localStorage
|
|
123
|
-
const PREFERENCE_KEY = 'user_preferences';
|
|
124
|
-
|
|
125
|
-
export function savePreferences(prefs: UserPreferences): void {
|
|
126
|
-
localStorage.setItem(PREFERENCE_KEY, JSON.stringify(prefs));
|
|
127
|
-
}
|
|
128
|
-
```
|
|
87
|
+
## 🔐 Secure Storage
|
|
88
|
+
|
|
89
|
+
### Token Storage Strategy
|
|
90
|
+
|
|
91
|
+
**Option 1: httpOnly Cookies (Most Secure)**
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// Backend sets httpOnly cookie
|
|
95
|
+
// Frontend doesn't access token directly
|
|
96
|
+
// Token sent automatically with requests
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Option 2: Memory Storage**
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// utils/auth.ts
|
|
103
|
+
let authToken: string | null = null;
|
|
104
|
+
|
|
105
|
+
export function setToken(token: string): void {
|
|
106
|
+
authToken = token; // Stored in memory only
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function getToken(): string | null {
|
|
110
|
+
return authToken;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function clearToken(): void {
|
|
114
|
+
authToken = null;
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Option 3: localStorage (Less Secure)**
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
// Only for non-sensitive data
|
|
122
|
+
// Never store sensitive tokens in localStorage
|
|
123
|
+
const PREFERENCE_KEY = 'user_preferences';
|
|
124
|
+
|
|
125
|
+
export function savePreferences(prefs: UserPreferences): void {
|
|
126
|
+
localStorage.setItem(PREFERENCE_KEY, JSON.stringify(prefs));
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
129
|
---
|
|
130
|
-
## 🔒 HTTPS Enforcement
|
|
131
|
-
|
|
132
|
-
### Redirect HTTP to HTTPS
|
|
133
|
-
|
|
134
|
-
```typescript
|
|
135
|
-
// Redirect in production
|
|
136
|
-
if (location.protocol === 'http:' && location.hostname !== 'localhost') {
|
|
137
|
-
location.replace(`https:${location.href.substring(location.protocol.length)}`);
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### HSTS Headers (Server-side)
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
145
|
-
```
|
|
130
|
+
## 🔒 HTTPS Enforcement
|
|
131
|
+
|
|
132
|
+
### Redirect HTTP to HTTPS
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Redirect in production
|
|
136
|
+
if (location.protocol === 'http:' && location.hostname !== 'localhost') {
|
|
137
|
+
location.replace(`https:${location.href.substring(location.protocol.length)}`);
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### HSTS Headers (Server-side)
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
145
|
+
```
|
|
146
146
|
---
|
|
147
|
-
## 🔍 Dependency Security
|
|
148
|
-
|
|
149
|
-
### Automated Scanning
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# npm audit
|
|
153
|
-
npm audit
|
|
154
|
-
|
|
155
|
-
# Fix vulnerabilities
|
|
156
|
-
npm audit fix
|
|
157
|
-
|
|
158
|
-
# Snyk
|
|
159
|
-
npx snyk test
|
|
160
|
-
|
|
161
|
-
# Dependabot (GitHub)
|
|
162
|
-
# Automatically creates PRs for security updates
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Security Checklist
|
|
166
|
-
|
|
167
|
-
- [ ] Run `npm audit` regularly
|
|
168
|
-
- [ ] Keep dependencies updated
|
|
169
|
-
- [ ] Review security advisories
|
|
170
|
-
- [ ] Use Dependabot or similar
|
|
171
|
-
- [ ] Remove unused dependencies
|
|
147
|
+
## 🔍 Dependency Security
|
|
148
|
+
|
|
149
|
+
### Automated Scanning
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# npm audit
|
|
153
|
+
npm audit
|
|
154
|
+
|
|
155
|
+
# Fix vulnerabilities
|
|
156
|
+
npm audit fix
|
|
157
|
+
|
|
158
|
+
# Snyk
|
|
159
|
+
npx snyk test
|
|
160
|
+
|
|
161
|
+
# Dependabot (GitHub)
|
|
162
|
+
# Automatically creates PRs for security updates
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Security Checklist
|
|
166
|
+
|
|
167
|
+
- [ ] Run `npm audit` regularly
|
|
168
|
+
- [ ] Keep dependencies updated
|
|
169
|
+
- [ ] Review security advisories
|
|
170
|
+
- [ ] Use Dependabot or similar
|
|
171
|
+
- [ ] Remove unused dependencies
|
|
172
172
|
---
|
|
173
|
-
## 🔗 Related Documents
|
|
174
|
-
|
|
175
|
-
- [Configuration](configuration.md) - Environment security
|
|
176
|
-
- [Error Handling](../docs/error-handling.md) - Security error handling
|
|
173
|
+
## 🔗 Related Documents
|
|
174
|
+
|
|
175
|
+
- [Configuration](configuration.md) - Environment security
|
|
176
|
+
- [Error Handling](../docs/error-handling.md) - Security error handling
|
|
177
177
|
---
|
|
178
|
-
**Last Updated:** {{GENERATION_DATE}}
|
|
179
|
-
|
|
180
|
-
**Security Level:** {{SECURITY_LEVEL}}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
**Last Updated:** {{GENERATION_DATE}}
|
|
179
|
+
|
|
180
|
+
**Security Level:** {{SECURITY_LEVEL}}
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|