opencode-metis 0.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.
- package/README.md +140 -0
- package/dist/cli.cjs +63 -0
- package/dist/mcp-server.cjs +51 -0
- package/dist/plugin.cjs +4 -0
- package/dist/worker.cjs +224 -0
- package/opencode/agent/the-analyst/feature-prioritization.md +66 -0
- package/opencode/agent/the-analyst/market-research.md +77 -0
- package/opencode/agent/the-analyst/project-coordination.md +81 -0
- package/opencode/agent/the-analyst/requirements-analysis.md +77 -0
- package/opencode/agent/the-architect/compatibility-review.md +138 -0
- package/opencode/agent/the-architect/complexity-review.md +137 -0
- package/opencode/agent/the-architect/quality-review.md +67 -0
- package/opencode/agent/the-architect/security-review.md +127 -0
- package/opencode/agent/the-architect/system-architecture.md +119 -0
- package/opencode/agent/the-architect/system-documentation.md +83 -0
- package/opencode/agent/the-architect/technology-research.md +85 -0
- package/opencode/agent/the-chief.md +79 -0
- package/opencode/agent/the-designer/accessibility-implementation.md +101 -0
- package/opencode/agent/the-designer/design-foundation.md +74 -0
- package/opencode/agent/the-designer/interaction-architecture.md +75 -0
- package/opencode/agent/the-designer/user-research.md +70 -0
- package/opencode/agent/the-meta-agent.md +155 -0
- package/opencode/agent/the-platform-engineer/ci-cd-pipelines.md +109 -0
- package/opencode/agent/the-platform-engineer/containerization.md +106 -0
- package/opencode/agent/the-platform-engineer/data-architecture.md +81 -0
- package/opencode/agent/the-platform-engineer/dependency-review.md +144 -0
- package/opencode/agent/the-platform-engineer/deployment-automation.md +81 -0
- package/opencode/agent/the-platform-engineer/infrastructure-as-code.md +107 -0
- package/opencode/agent/the-platform-engineer/performance-tuning.md +82 -0
- package/opencode/agent/the-platform-engineer/pipeline-engineering.md +81 -0
- package/opencode/agent/the-platform-engineer/production-monitoring.md +105 -0
- package/opencode/agent/the-qa-engineer/exploratory-testing.md +66 -0
- package/opencode/agent/the-qa-engineer/performance-testing.md +81 -0
- package/opencode/agent/the-qa-engineer/quality-assurance.md +77 -0
- package/opencode/agent/the-qa-engineer/test-execution.md +66 -0
- package/opencode/agent/the-software-engineer/api-development.md +78 -0
- package/opencode/agent/the-software-engineer/component-development.md +79 -0
- package/opencode/agent/the-software-engineer/concurrency-review.md +141 -0
- package/opencode/agent/the-software-engineer/domain-modeling.md +66 -0
- package/opencode/agent/the-software-engineer/performance-optimization.md +113 -0
- package/opencode/command/analyze.md +149 -0
- package/opencode/command/constitution.md +178 -0
- package/opencode/command/debug.md +194 -0
- package/opencode/command/document.md +178 -0
- package/opencode/command/implement.md +225 -0
- package/opencode/command/refactor.md +207 -0
- package/opencode/command/review.md +229 -0
- package/opencode/command/simplify.md +267 -0
- package/opencode/command/specify.md +191 -0
- package/opencode/command/validate.md +224 -0
- package/opencode/skill/accessibility-design/SKILL.md +566 -0
- package/opencode/skill/accessibility-design/checklists/wcag-checklist.md +435 -0
- package/opencode/skill/agent-coordination/SKILL.md +224 -0
- package/opencode/skill/api-contract-design/SKILL.md +550 -0
- package/opencode/skill/api-contract-design/templates/graphql-schema-template.md +818 -0
- package/opencode/skill/api-contract-design/templates/rest-api-template.md +417 -0
- package/opencode/skill/architecture-design/SKILL.md +160 -0
- package/opencode/skill/architecture-design/examples/architecture-examples.md +170 -0
- package/opencode/skill/architecture-design/template.md +749 -0
- package/opencode/skill/architecture-design/validation.md +99 -0
- package/opencode/skill/architecture-selection/SKILL.md +522 -0
- package/opencode/skill/architecture-selection/examples/adrs/001-example-adr.md +71 -0
- package/opencode/skill/architecture-selection/examples/architecture-patterns.md +239 -0
- package/opencode/skill/bug-diagnosis/SKILL.md +235 -0
- package/opencode/skill/code-quality-review/SKILL.md +337 -0
- package/opencode/skill/code-quality-review/examples/anti-patterns.md +629 -0
- package/opencode/skill/code-quality-review/reference.md +322 -0
- package/opencode/skill/code-review/SKILL.md +363 -0
- package/opencode/skill/code-review/reference.md +450 -0
- package/opencode/skill/codebase-analysis/SKILL.md +139 -0
- package/opencode/skill/codebase-navigation/SKILL.md +227 -0
- package/opencode/skill/codebase-navigation/examples/exploration-patterns.md +263 -0
- package/opencode/skill/coding-conventions/SKILL.md +178 -0
- package/opencode/skill/coding-conventions/checklists/accessibility-checklist.md +176 -0
- package/opencode/skill/coding-conventions/checklists/performance-checklist.md +154 -0
- package/opencode/skill/coding-conventions/checklists/security-checklist.md +127 -0
- package/opencode/skill/constitution-validation/SKILL.md +315 -0
- package/opencode/skill/constitution-validation/examples/CONSTITUTION.md +202 -0
- package/opencode/skill/constitution-validation/reference/rule-patterns.md +328 -0
- package/opencode/skill/constitution-validation/template.md +115 -0
- package/opencode/skill/context-preservation/SKILL.md +445 -0
- package/opencode/skill/data-modeling/SKILL.md +385 -0
- package/opencode/skill/data-modeling/templates/schema-design-template.md +268 -0
- package/opencode/skill/deployment-pipeline-design/SKILL.md +579 -0
- package/opencode/skill/deployment-pipeline-design/templates/pipeline-template.md +633 -0
- package/opencode/skill/documentation-extraction/SKILL.md +259 -0
- package/opencode/skill/documentation-sync/SKILL.md +431 -0
- package/opencode/skill/domain-driven-design/SKILL.md +509 -0
- package/opencode/skill/domain-driven-design/examples/ddd-patterns.md +688 -0
- package/opencode/skill/domain-driven-design/reference.md +465 -0
- package/opencode/skill/drift-detection/SKILL.md +383 -0
- package/opencode/skill/drift-detection/reference.md +340 -0
- package/opencode/skill/error-recovery/SKILL.md +162 -0
- package/opencode/skill/error-recovery/examples/error-patterns.md +484 -0
- package/opencode/skill/feature-prioritization/SKILL.md +419 -0
- package/opencode/skill/feature-prioritization/examples/rice-template.md +139 -0
- package/opencode/skill/feature-prioritization/reference.md +256 -0
- package/opencode/skill/git-workflow/SKILL.md +453 -0
- package/opencode/skill/implementation-planning/SKILL.md +215 -0
- package/opencode/skill/implementation-planning/examples/phase-examples.md +217 -0
- package/opencode/skill/implementation-planning/template.md +220 -0
- package/opencode/skill/implementation-planning/validation.md +88 -0
- package/opencode/skill/implementation-verification/SKILL.md +272 -0
- package/opencode/skill/knowledge-capture/SKILL.md +265 -0
- package/opencode/skill/knowledge-capture/reference/knowledge-capture.md +402 -0
- package/opencode/skill/knowledge-capture/reference.md +444 -0
- package/opencode/skill/knowledge-capture/templates/domain-template.md +325 -0
- package/opencode/skill/knowledge-capture/templates/interface-template.md +255 -0
- package/opencode/skill/knowledge-capture/templates/pattern-template.md +144 -0
- package/opencode/skill/observability-design/SKILL.md +291 -0
- package/opencode/skill/observability-design/references/monitoring-patterns.md +461 -0
- package/opencode/skill/pattern-detection/SKILL.md +171 -0
- package/opencode/skill/pattern-detection/examples/common-patterns.md +359 -0
- package/opencode/skill/performance-analysis/SKILL.md +266 -0
- package/opencode/skill/performance-analysis/references/profiling-tools.md +499 -0
- package/opencode/skill/requirements-analysis/SKILL.md +139 -0
- package/opencode/skill/requirements-analysis/examples/good-prd.md +66 -0
- package/opencode/skill/requirements-analysis/template.md +177 -0
- package/opencode/skill/requirements-analysis/validation.md +69 -0
- package/opencode/skill/requirements-elicitation/SKILL.md +518 -0
- package/opencode/skill/requirements-elicitation/examples/interview-questions.md +226 -0
- package/opencode/skill/requirements-elicitation/examples/user-stories.md +414 -0
- package/opencode/skill/safe-refactoring/SKILL.md +312 -0
- package/opencode/skill/safe-refactoring/reference/code-smells.md +347 -0
- package/opencode/skill/security-assessment/SKILL.md +421 -0
- package/opencode/skill/security-assessment/checklists/security-review-checklist.md +285 -0
- package/opencode/skill/specification-management/SKILL.md +143 -0
- package/opencode/skill/specification-management/readme-template.md +32 -0
- package/opencode/skill/specification-management/reference.md +115 -0
- package/opencode/skill/specification-management/spec.py +229 -0
- package/opencode/skill/specification-validation/SKILL.md +397 -0
- package/opencode/skill/specification-validation/reference/3cs-framework.md +306 -0
- package/opencode/skill/specification-validation/reference/ambiguity-detection.md +132 -0
- package/opencode/skill/specification-validation/reference/constitution-validation.md +301 -0
- package/opencode/skill/specification-validation/reference/drift-detection.md +383 -0
- package/opencode/skill/task-delegation/SKILL.md +607 -0
- package/opencode/skill/task-delegation/examples/file-coordination.md +495 -0
- package/opencode/skill/task-delegation/examples/parallel-research.md +337 -0
- package/opencode/skill/task-delegation/examples/sequential-build.md +504 -0
- package/opencode/skill/task-delegation/reference.md +825 -0
- package/opencode/skill/tech-stack-detection/SKILL.md +89 -0
- package/opencode/skill/tech-stack-detection/references/framework-signatures.md +598 -0
- package/opencode/skill/technical-writing/SKILL.md +190 -0
- package/opencode/skill/technical-writing/templates/adr-template.md +205 -0
- package/opencode/skill/technical-writing/templates/system-doc-template.md +380 -0
- package/opencode/skill/test-design/SKILL.md +464 -0
- package/opencode/skill/test-design/examples/test-pyramid.md +724 -0
- package/opencode/skill/testing/SKILL.md +213 -0
- package/opencode/skill/testing/examples/test-pyramid.md +724 -0
- package/opencode/skill/user-insight-synthesis/SKILL.md +576 -0
- package/opencode/skill/user-insight-synthesis/templates/research-plan-template.md +217 -0
- package/opencode/skill/user-research/SKILL.md +508 -0
- package/opencode/skill/user-research/examples/interview-questions.md +265 -0
- package/opencode/skill/user-research/examples/personas.md +267 -0
- package/opencode/skill/vibe-security/SKILL.md +654 -0
- package/package.json +45 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Accessibility Checklist
|
|
2
|
+
|
|
3
|
+
WCAG 2.1 Level AA compliance checklist for inclusive design.
|
|
4
|
+
|
|
5
|
+
## Perceivable
|
|
6
|
+
|
|
7
|
+
### Text Alternatives (1.1)
|
|
8
|
+
|
|
9
|
+
- [ ] All images have meaningful alt text describing content or function
|
|
10
|
+
- [ ] Decorative images have empty alt (`alt=""`) or are CSS backgrounds
|
|
11
|
+
- [ ] Complex images (charts, diagrams) have extended descriptions
|
|
12
|
+
- [ ] Icons used as controls have accessible labels
|
|
13
|
+
- [ ] CAPTCHAs provide alternative methods
|
|
14
|
+
|
|
15
|
+
### Time-Based Media (1.2)
|
|
16
|
+
|
|
17
|
+
- [ ] Videos have captions
|
|
18
|
+
- [ ] Videos have audio descriptions for visual-only content
|
|
19
|
+
- [ ] Live audio content has captions
|
|
20
|
+
- [ ] Pre-recorded audio has transcripts
|
|
21
|
+
|
|
22
|
+
### Adaptable (1.3)
|
|
23
|
+
|
|
24
|
+
- [ ] Content structure uses semantic HTML (headings, lists, tables)
|
|
25
|
+
- [ ] Heading hierarchy is logical (h1 -> h2 -> h3)
|
|
26
|
+
- [ ] Tables have proper headers (`<th>` with scope)
|
|
27
|
+
- [ ] Form inputs have associated labels
|
|
28
|
+
- [ ] Reading order is logical when CSS is disabled
|
|
29
|
+
- [ ] Instructions do not rely solely on sensory characteristics (color, shape)
|
|
30
|
+
|
|
31
|
+
### Distinguishable (1.4)
|
|
32
|
+
|
|
33
|
+
- [ ] Color is not the only means of conveying information
|
|
34
|
+
- [ ] Text color contrast ratio is at least 4.5:1 (3:1 for large text)
|
|
35
|
+
- [ ] UI component contrast ratio is at least 3:1
|
|
36
|
+
- [ ] Text can be resized to 200% without loss of content
|
|
37
|
+
- [ ] Text is not in images (except logos)
|
|
38
|
+
- [ ] Content reflows at 320px width without horizontal scrolling
|
|
39
|
+
- [ ] Line height is at least 1.5, paragraph spacing at least 2x font size
|
|
40
|
+
- [ ] No content is lost when user overrides text spacing
|
|
41
|
+
|
|
42
|
+
## Operable
|
|
43
|
+
|
|
44
|
+
### Keyboard Accessible (2.1)
|
|
45
|
+
|
|
46
|
+
- [ ] All functionality is available via keyboard
|
|
47
|
+
- [ ] No keyboard traps (user can navigate away from all components)
|
|
48
|
+
- [ ] Keyboard shortcuts can be turned off or remapped
|
|
49
|
+
- [ ] Focus order is logical and intuitive
|
|
50
|
+
- [ ] Custom components have appropriate keyboard interactions
|
|
51
|
+
|
|
52
|
+
### Enough Time (2.2)
|
|
53
|
+
|
|
54
|
+
- [ ] Time limits can be turned off, adjusted, or extended
|
|
55
|
+
- [ ] Auto-updating content can be paused, stopped, or hidden
|
|
56
|
+
- [ ] No timing-dependent interactions unless essential
|
|
57
|
+
- [ ] Session timeouts warn users and allow extension
|
|
58
|
+
|
|
59
|
+
### Seizures and Physical Reactions (2.3)
|
|
60
|
+
|
|
61
|
+
- [ ] No content flashes more than 3 times per second
|
|
62
|
+
- [ ] Motion animations can be disabled (respect prefers-reduced-motion)
|
|
63
|
+
|
|
64
|
+
### Navigable (2.4)
|
|
65
|
+
|
|
66
|
+
- [ ] Skip link allows bypassing repetitive content
|
|
67
|
+
- [ ] Pages have descriptive titles
|
|
68
|
+
- [ ] Focus order matches visual order
|
|
69
|
+
- [ ] Link purpose is clear from link text (not "click here")
|
|
70
|
+
- [ ] Multiple ways to find pages (navigation, search, sitemap)
|
|
71
|
+
- [ ] Headings and labels describe content
|
|
72
|
+
- [ ] Focus indicator is visible
|
|
73
|
+
|
|
74
|
+
### Input Modalities (2.5)
|
|
75
|
+
|
|
76
|
+
- [ ] Touch targets are at least 44x44 CSS pixels
|
|
77
|
+
- [ ] Functionality requiring multi-point gestures has alternatives
|
|
78
|
+
- [ ] Functionality requiring motion has alternatives
|
|
79
|
+
- [ ] Dragging operations have single-pointer alternatives
|
|
80
|
+
|
|
81
|
+
## Understandable
|
|
82
|
+
|
|
83
|
+
### Readable (3.1)
|
|
84
|
+
|
|
85
|
+
- [ ] Page language is set (`<html lang="en">`)
|
|
86
|
+
- [ ] Language changes within content are marked
|
|
87
|
+
- [ ] Unusual words or jargon are defined
|
|
88
|
+
- [ ] Abbreviations are expanded on first use
|
|
89
|
+
|
|
90
|
+
### Predictable (3.2)
|
|
91
|
+
|
|
92
|
+
- [ ] Focus does not trigger unexpected context changes
|
|
93
|
+
- [ ] Input does not automatically trigger context changes
|
|
94
|
+
- [ ] Navigation is consistent across pages
|
|
95
|
+
- [ ] Components with same function are identified consistently
|
|
96
|
+
|
|
97
|
+
### Input Assistance (3.3)
|
|
98
|
+
|
|
99
|
+
- [ ] Error messages identify the field and describe the error
|
|
100
|
+
- [ ] Form fields have labels and instructions
|
|
101
|
+
- [ ] Error suggestions are provided when known
|
|
102
|
+
- [ ] Users can review, correct, and confirm submissions
|
|
103
|
+
- [ ] Help is available for complex inputs
|
|
104
|
+
|
|
105
|
+
## Robust
|
|
106
|
+
|
|
107
|
+
### Compatible (4.1)
|
|
108
|
+
|
|
109
|
+
- [ ] HTML is valid and well-formed
|
|
110
|
+
- [ ] Custom components have proper ARIA roles, states, and properties
|
|
111
|
+
- [ ] Status messages are announced by screen readers (aria-live)
|
|
112
|
+
- [ ] Name, role, and value are programmatically determinable
|
|
113
|
+
|
|
114
|
+
## Component-Specific Checks
|
|
115
|
+
|
|
116
|
+
### Forms
|
|
117
|
+
|
|
118
|
+
- [ ] All inputs have visible labels
|
|
119
|
+
- [ ] Required fields are indicated (not by color alone)
|
|
120
|
+
- [ ] Error messages are associated with inputs
|
|
121
|
+
- [ ] Form validation errors are announced
|
|
122
|
+
- [ ] Autocomplete attributes are used appropriately
|
|
123
|
+
|
|
124
|
+
### Modals and Dialogs
|
|
125
|
+
|
|
126
|
+
- [ ] Focus moves to modal when opened
|
|
127
|
+
- [ ] Focus is trapped within modal while open
|
|
128
|
+
- [ ] Focus returns to trigger element when closed
|
|
129
|
+
- [ ] Modal can be closed with Escape key
|
|
130
|
+
- [ ] Background content is hidden from screen readers (aria-hidden)
|
|
131
|
+
|
|
132
|
+
### Navigation Menus
|
|
133
|
+
|
|
134
|
+
- [ ] Current page/section is indicated
|
|
135
|
+
- [ ] Dropdowns are keyboard accessible
|
|
136
|
+
- [ ] Expanded/collapsed state is announced (aria-expanded)
|
|
137
|
+
- [ ] Mobile menu is accessible
|
|
138
|
+
|
|
139
|
+
### Data Tables
|
|
140
|
+
|
|
141
|
+
- [ ] Headers are properly associated with cells
|
|
142
|
+
- [ ] Complex tables use id/headers attributes
|
|
143
|
+
- [ ] Sortable columns indicate sort state
|
|
144
|
+
- [ ] Tables are not used for layout
|
|
145
|
+
|
|
146
|
+
### Carousels and Sliders
|
|
147
|
+
|
|
148
|
+
- [ ] Pause control is available for auto-advancing
|
|
149
|
+
- [ ] Navigation controls are keyboard accessible
|
|
150
|
+
- [ ] Current slide is announced to screen readers
|
|
151
|
+
- [ ] Slide content is accessible when visible
|
|
152
|
+
|
|
153
|
+
## Testing Methods
|
|
154
|
+
|
|
155
|
+
### Automated Testing
|
|
156
|
+
|
|
157
|
+
- [ ] axe-core or similar tool runs in CI
|
|
158
|
+
- [ ] Lighthouse accessibility audit passes
|
|
159
|
+
- [ ] HTML validation passes
|
|
160
|
+
|
|
161
|
+
### Manual Testing
|
|
162
|
+
|
|
163
|
+
- [ ] Navigate entire interface with keyboard only
|
|
164
|
+
- [ ] Test with screen reader (VoiceOver, NVDA)
|
|
165
|
+
- [ ] Test with browser zoom at 200%
|
|
166
|
+
- [ ] Test with high contrast mode
|
|
167
|
+
- [ ] Test with prefers-reduced-motion enabled
|
|
168
|
+
|
|
169
|
+
## Usage Notes
|
|
170
|
+
|
|
171
|
+
1. Accessibility is a legal requirement in many jurisdictions
|
|
172
|
+
2. Not every item applies to every component - use judgment
|
|
173
|
+
3. Automated tools catch only ~30% of issues - manual testing is essential
|
|
174
|
+
4. Include users with disabilities in usability testing when possible
|
|
175
|
+
5. Document exceptions with rationale and remediation plan
|
|
176
|
+
6. Accessibility should be part of the definition of done
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Performance Checklist
|
|
2
|
+
|
|
3
|
+
Actionable performance optimization checks for frontend, backend, and database operations.
|
|
4
|
+
|
|
5
|
+
## Frontend Performance
|
|
6
|
+
|
|
7
|
+
### Initial Load
|
|
8
|
+
|
|
9
|
+
- [ ] Critical CSS is inlined or loaded first
|
|
10
|
+
- [ ] JavaScript is deferred or loaded async where possible
|
|
11
|
+
- [ ] Images are lazy-loaded below the fold
|
|
12
|
+
- [ ] Web fonts use `font-display: swap` to prevent blocking
|
|
13
|
+
- [ ] Bundle size is monitored and kept under budget
|
|
14
|
+
- [ ] Code splitting is used for route-based chunks
|
|
15
|
+
- [ ] Tree shaking removes unused code
|
|
16
|
+
|
|
17
|
+
### Runtime Performance
|
|
18
|
+
|
|
19
|
+
- [ ] Long lists use virtualization (render only visible items)
|
|
20
|
+
- [ ] Expensive calculations are memoized
|
|
21
|
+
- [ ] React/Vue components avoid unnecessary re-renders
|
|
22
|
+
- [ ] Event handlers are debounced or throttled where appropriate
|
|
23
|
+
- [ ] Animations use CSS transforms, not layout-triggering properties
|
|
24
|
+
- [ ] Large data processing uses Web Workers
|
|
25
|
+
|
|
26
|
+
### Assets
|
|
27
|
+
|
|
28
|
+
- [ ] Images are properly sized (not scaling down large images)
|
|
29
|
+
- [ ] Modern image formats used (WebP, AVIF with fallbacks)
|
|
30
|
+
- [ ] Images are compressed without quality loss
|
|
31
|
+
- [ ] SVGs are optimized and used for icons
|
|
32
|
+
- [ ] Fonts are subsetted to include only needed characters
|
|
33
|
+
- [ ] Assets are served from CDN
|
|
34
|
+
|
|
35
|
+
### Caching
|
|
36
|
+
|
|
37
|
+
- [ ] Static assets have cache-control headers with long max-age
|
|
38
|
+
- [ ] Asset filenames include content hash for cache busting
|
|
39
|
+
- [ ] Service worker caches critical resources
|
|
40
|
+
- [ ] API responses include appropriate cache headers
|
|
41
|
+
|
|
42
|
+
## Backend Performance
|
|
43
|
+
|
|
44
|
+
### Request Handling
|
|
45
|
+
|
|
46
|
+
- [ ] Endpoints respond within acceptable latency targets
|
|
47
|
+
- [ ] Heavy operations are processed asynchronously
|
|
48
|
+
- [ ] Request payload size limits are enforced
|
|
49
|
+
- [ ] Response payloads include only necessary data
|
|
50
|
+
- [ ] Pagination is used for list endpoints
|
|
51
|
+
- [ ] Compression (gzip, brotli) is enabled
|
|
52
|
+
|
|
53
|
+
### Computation
|
|
54
|
+
|
|
55
|
+
- [ ] CPU-intensive tasks are offloaded to worker processes
|
|
56
|
+
- [ ] Algorithms have acceptable time complexity for data size
|
|
57
|
+
- [ ] Loops avoid unnecessary iterations
|
|
58
|
+
- [ ] String concatenation in loops uses efficient methods
|
|
59
|
+
- [ ] Regular expressions are optimized and avoid catastrophic backtracking
|
|
60
|
+
|
|
61
|
+
### Caching
|
|
62
|
+
|
|
63
|
+
- [ ] Frequently accessed data is cached in memory (Redis, Memcached)
|
|
64
|
+
- [ ] Cache invalidation strategy is defined
|
|
65
|
+
- [ ] Cache hit rates are monitored
|
|
66
|
+
- [ ] Cache keys are designed to avoid collisions
|
|
67
|
+
- [ ] TTLs are set appropriately for data freshness requirements
|
|
68
|
+
|
|
69
|
+
### External Services
|
|
70
|
+
|
|
71
|
+
- [ ] API calls are batched where possible
|
|
72
|
+
- [ ] Circuit breakers prevent cascading failures
|
|
73
|
+
- [ ] Timeouts are set on all external calls
|
|
74
|
+
- [ ] Retries use exponential backoff
|
|
75
|
+
- [ ] Connection pools are sized appropriately
|
|
76
|
+
|
|
77
|
+
## Database Performance
|
|
78
|
+
|
|
79
|
+
### Query Optimization
|
|
80
|
+
|
|
81
|
+
- [ ] Queries retrieve only needed columns (no SELECT *)
|
|
82
|
+
- [ ] Indexes exist for frequently queried columns
|
|
83
|
+
- [ ] Composite indexes match query patterns
|
|
84
|
+
- [ ] N+1 query problems are eliminated (use JOINs or batch loading)
|
|
85
|
+
- [ ] Query execution plans are reviewed for slow queries
|
|
86
|
+
- [ ] LIMIT is used for large result sets
|
|
87
|
+
|
|
88
|
+
### Schema Design
|
|
89
|
+
|
|
90
|
+
- [ ] Tables are normalized appropriately (avoid over-normalization)
|
|
91
|
+
- [ ] Data types are sized correctly (not oversized)
|
|
92
|
+
- [ ] Foreign keys have indexes
|
|
93
|
+
- [ ] Frequently accessed fields are not in separate tables requiring JOINs
|
|
94
|
+
|
|
95
|
+
### Connection Management
|
|
96
|
+
|
|
97
|
+
- [ ] Connection pooling is configured
|
|
98
|
+
- [ ] Pool size matches expected concurrency
|
|
99
|
+
- [ ] Connections are released promptly after use
|
|
100
|
+
- [ ] Long-running transactions are avoided
|
|
101
|
+
- [ ] Read replicas are used for read-heavy workloads
|
|
102
|
+
|
|
103
|
+
### Data Lifecycle
|
|
104
|
+
|
|
105
|
+
- [ ] Old data is archived or deleted according to policy
|
|
106
|
+
- [ ] Large tables have partitioning strategy
|
|
107
|
+
- [ ] Bulk operations are batched to avoid lock contention
|
|
108
|
+
- [ ] Indexes are rebuilt periodically if needed
|
|
109
|
+
|
|
110
|
+
## API Performance
|
|
111
|
+
|
|
112
|
+
### Design
|
|
113
|
+
|
|
114
|
+
- [ ] Endpoints support field selection (sparse fieldsets)
|
|
115
|
+
- [ ] Batch endpoints available for multiple-item operations
|
|
116
|
+
- [ ] GraphQL queries have depth/complexity limits
|
|
117
|
+
- [ ] Large responses support streaming or pagination
|
|
118
|
+
|
|
119
|
+
### Network
|
|
120
|
+
|
|
121
|
+
- [ ] HTTP/2 or HTTP/3 is enabled
|
|
122
|
+
- [ ] Keep-alive connections are used
|
|
123
|
+
- [ ] Response compression is enabled
|
|
124
|
+
- [ ] CDN caching is used for cacheable responses
|
|
125
|
+
|
|
126
|
+
## Monitoring and Measurement
|
|
127
|
+
|
|
128
|
+
### Metrics
|
|
129
|
+
|
|
130
|
+
- [ ] Response time percentiles are tracked (p50, p95, p99)
|
|
131
|
+
- [ ] Error rates are monitored
|
|
132
|
+
- [ ] Resource utilization is tracked (CPU, memory, connections)
|
|
133
|
+
- [ ] Throughput is measured under load
|
|
134
|
+
|
|
135
|
+
### Alerting
|
|
136
|
+
|
|
137
|
+
- [ ] Latency degradation triggers alerts
|
|
138
|
+
- [ ] Resource exhaustion triggers alerts
|
|
139
|
+
- [ ] Error rate spikes trigger alerts
|
|
140
|
+
|
|
141
|
+
### Profiling
|
|
142
|
+
|
|
143
|
+
- [ ] Production profiling tools are available
|
|
144
|
+
- [ ] Slow query logging is enabled
|
|
145
|
+
- [ ] Application performance monitoring (APM) is configured
|
|
146
|
+
|
|
147
|
+
## Usage Notes
|
|
148
|
+
|
|
149
|
+
1. Measure before optimizing - identify actual bottlenecks
|
|
150
|
+
2. Set performance budgets and enforce them in CI
|
|
151
|
+
3. Not every optimization applies to every system
|
|
152
|
+
4. Document performance-critical paths
|
|
153
|
+
5. Load test under realistic conditions
|
|
154
|
+
6. Performance regression tests should be part of CI/CD
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Security Checklist
|
|
2
|
+
|
|
3
|
+
OWASP Top 10 aligned security checks for code review and implementation validation.
|
|
4
|
+
|
|
5
|
+
## A01: Broken Access Control
|
|
6
|
+
|
|
7
|
+
- [ ] All endpoints verify user authentication before processing
|
|
8
|
+
- [ ] Authorization checks occur on every request, not just UI hiding
|
|
9
|
+
- [ ] Users cannot access resources belonging to other users by modifying IDs
|
|
10
|
+
- [ ] Directory traversal attacks are prevented (no `../` in file paths)
|
|
11
|
+
- [ ] CORS is configured to allow only trusted origins
|
|
12
|
+
- [ ] Default deny: access requires explicit grant, not explicit denial
|
|
13
|
+
|
|
14
|
+
## A02: Cryptographic Failures
|
|
15
|
+
|
|
16
|
+
- [ ] Sensitive data is encrypted at rest (database, file storage)
|
|
17
|
+
- [ ] TLS 1.2+ is enforced for all data in transit
|
|
18
|
+
- [ ] Passwords use strong hashing (bcrypt, argon2) with appropriate cost
|
|
19
|
+
- [ ] No hardcoded secrets, API keys, or credentials in code
|
|
20
|
+
- [ ] Secrets are stored in environment variables or secret managers
|
|
21
|
+
- [ ] Cryptographic keys are rotated on a schedule
|
|
22
|
+
- [ ] No deprecated algorithms (MD5, SHA1 for security, DES, RC4)
|
|
23
|
+
|
|
24
|
+
## A03: Injection
|
|
25
|
+
|
|
26
|
+
- [ ] SQL queries use parameterized statements, never string concatenation
|
|
27
|
+
- [ ] NoSQL queries are properly escaped or use ODM/ORM
|
|
28
|
+
- [ ] OS commands are avoided; if necessary, inputs are validated against allowlist
|
|
29
|
+
- [ ] LDAP queries use proper escaping
|
|
30
|
+
- [ ] XML parsers disable external entity processing (XXE prevention)
|
|
31
|
+
- [ ] Template engines use auto-escaping by default
|
|
32
|
+
|
|
33
|
+
## A04: Insecure Design
|
|
34
|
+
|
|
35
|
+
- [ ] Threat modeling performed for new features
|
|
36
|
+
- [ ] Rate limiting implemented on authentication and sensitive endpoints
|
|
37
|
+
- [ ] Business logic includes abuse prevention (e.g., quantity limits)
|
|
38
|
+
- [ ] Fail securely: errors default to denied access
|
|
39
|
+
- [ ] Security requirements documented and testable
|
|
40
|
+
- [ ] Separation of tenants in multi-tenant systems
|
|
41
|
+
|
|
42
|
+
## A05: Security Misconfiguration
|
|
43
|
+
|
|
44
|
+
- [ ] Default credentials changed on all systems
|
|
45
|
+
- [ ] Unnecessary features and frameworks disabled
|
|
46
|
+
- [ ] Error messages do not expose stack traces or system details
|
|
47
|
+
- [ ] Security headers configured (CSP, X-Frame-Options, etc.)
|
|
48
|
+
- [ ] Cloud storage buckets are not publicly accessible by default
|
|
49
|
+
- [ ] Development/debug features disabled in production
|
|
50
|
+
|
|
51
|
+
## A06: Vulnerable Components
|
|
52
|
+
|
|
53
|
+
- [ ] Dependencies are tracked and regularly updated
|
|
54
|
+
- [ ] Known vulnerabilities are checked (npm audit, Snyk, Dependabot)
|
|
55
|
+
- [ ] Components are obtained from official sources
|
|
56
|
+
- [ ] Unused dependencies are removed
|
|
57
|
+
- [ ] Component versions are pinned (not floating)
|
|
58
|
+
- [ ] License compliance is verified
|
|
59
|
+
|
|
60
|
+
## A07: Identification and Authentication Failures
|
|
61
|
+
|
|
62
|
+
- [ ] Multi-factor authentication available for sensitive operations
|
|
63
|
+
- [ ] Password requirements meet current standards (length over complexity)
|
|
64
|
+
- [ ] Brute force protection: lockout or increasing delays
|
|
65
|
+
- [ ] Session tokens are regenerated after login
|
|
66
|
+
- [ ] Session tokens are invalidated on logout
|
|
67
|
+
- [ ] Sessions have appropriate timeouts
|
|
68
|
+
- [ ] Password reset tokens are single-use and time-limited
|
|
69
|
+
|
|
70
|
+
## A08: Software and Data Integrity Failures
|
|
71
|
+
|
|
72
|
+
- [ ] CI/CD pipelines verify integrity of dependencies
|
|
73
|
+
- [ ] Signed commits or verified sources for code
|
|
74
|
+
- [ ] Deserialization of untrusted data is avoided
|
|
75
|
+
- [ ] If deserialization is necessary, integrity checks are in place
|
|
76
|
+
- [ ] Update mechanisms verify signatures
|
|
77
|
+
- [ ] Code review required before deployment
|
|
78
|
+
|
|
79
|
+
## A09: Security Logging and Monitoring Failures
|
|
80
|
+
|
|
81
|
+
- [ ] Authentication events are logged (success and failure)
|
|
82
|
+
- [ ] Authorization failures are logged
|
|
83
|
+
- [ ] Input validation failures are logged
|
|
84
|
+
- [ ] Logs include sufficient context (timestamp, user, action, outcome)
|
|
85
|
+
- [ ] Logs do not contain sensitive data (passwords, tokens, PII)
|
|
86
|
+
- [ ] Alerting is configured for suspicious patterns
|
|
87
|
+
- [ ] Logs are stored securely and cannot be tampered with
|
|
88
|
+
|
|
89
|
+
## A10: Server-Side Request Forgery (SSRF)
|
|
90
|
+
|
|
91
|
+
- [ ] URLs from user input are validated against allowlist
|
|
92
|
+
- [ ] Internal network addresses are blocked (127.0.0.1, 10.x, 192.168.x)
|
|
93
|
+
- [ ] URL schemes are restricted (http/https only)
|
|
94
|
+
- [ ] Responses from external requests are not directly returned to users
|
|
95
|
+
- [ ] Network segmentation limits impact of SSRF
|
|
96
|
+
|
|
97
|
+
## Additional Checks
|
|
98
|
+
|
|
99
|
+
### Input Validation
|
|
100
|
+
|
|
101
|
+
- [ ] All user input is validated on the server side
|
|
102
|
+
- [ ] Validation uses allowlists, not blocklists
|
|
103
|
+
- [ ] File uploads validate type, size, and content
|
|
104
|
+
- [ ] JSON/XML payloads are validated against schema
|
|
105
|
+
|
|
106
|
+
### Output Encoding
|
|
107
|
+
|
|
108
|
+
- [ ] HTML output is encoded to prevent XSS
|
|
109
|
+
- [ ] JSON responses use proper content-type headers
|
|
110
|
+
- [ ] URLs are encoded when constructed dynamically
|
|
111
|
+
- [ ] Context-appropriate encoding (HTML, JavaScript, CSS, URL)
|
|
112
|
+
|
|
113
|
+
### API Security
|
|
114
|
+
|
|
115
|
+
- [ ] Authentication required for all non-public endpoints
|
|
116
|
+
- [ ] API keys are treated as secrets
|
|
117
|
+
- [ ] Rate limiting prevents abuse
|
|
118
|
+
- [ ] Response data is filtered to authorized fields only
|
|
119
|
+
- [ ] HTTP methods are restricted appropriately
|
|
120
|
+
|
|
121
|
+
## Usage Notes
|
|
122
|
+
|
|
123
|
+
1. Apply this checklist during code review
|
|
124
|
+
2. Use automated tools (SAST, DAST) to complement manual review
|
|
125
|
+
3. Not all items apply to every change - use judgment
|
|
126
|
+
4. Document any exceptions with rationale
|
|
127
|
+
5. Security testing should be part of the CI/CD pipeline
|