@tinkcarlos/skillora 0.2.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/.claude/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
# Infrastructure Review Guide
|
|
2
|
+
|
|
3
|
+
> Comprehensive guide for reviewing Docker, Kubernetes, Terraform, CI/CD, and infrastructure as code.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Docker Review](#docker-review)
|
|
8
|
+
- [Kubernetes Review](#kubernetes-review)
|
|
9
|
+
- [Terraform/IaC Review](#terraformiac-review)
|
|
10
|
+
- [CI/CD Pipeline Review](#cicd-pipeline-review)
|
|
11
|
+
- [Security Checklist](#security-checklist)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Docker Review
|
|
16
|
+
|
|
17
|
+
### Dockerfile Best Practices
|
|
18
|
+
|
|
19
|
+
| Check | Bad | Good |
|
|
20
|
+
|-------|-----|------|
|
|
21
|
+
| **Base Image** | `FROM ubuntu:latest` | `FROM ubuntu:22.04` |
|
|
22
|
+
| **User** | Running as root | `USER nonroot` |
|
|
23
|
+
| **Multi-stage** | Single fat image | Multi-stage build |
|
|
24
|
+
| **Layer Cache** | COPY before deps | COPY deps first, then code |
|
|
25
|
+
| **Secrets** | ARG PASSWORD=xxx | Use secrets management |
|
|
26
|
+
|
|
27
|
+
### Common Dockerfile Bugs
|
|
28
|
+
|
|
29
|
+
```dockerfile
|
|
30
|
+
# 🔴 BUG: Using latest tag (non-reproducible builds)
|
|
31
|
+
FROM node:latest
|
|
32
|
+
|
|
33
|
+
# ✅ FIX: Pin specific version
|
|
34
|
+
FROM node:20.10.0-alpine3.18
|
|
35
|
+
|
|
36
|
+
# 🔴 BUG: Running as root
|
|
37
|
+
FROM python:3.11
|
|
38
|
+
|
|
39
|
+
# ✅ FIX: Create non-root user
|
|
40
|
+
FROM python:3.11
|
|
41
|
+
RUN useradd -m appuser
|
|
42
|
+
USER appuser
|
|
43
|
+
|
|
44
|
+
# 🔴 BUG: Secrets in build args
|
|
45
|
+
ARG DATABASE_PASSWORD
|
|
46
|
+
ENV DB_PASS=$DATABASE_PASSWORD
|
|
47
|
+
|
|
48
|
+
# ✅ FIX: Use runtime secrets
|
|
49
|
+
# Pass at runtime: docker run -e DB_PASS=$(cat /secrets/db)
|
|
50
|
+
|
|
51
|
+
# 🔴 BUG: Not cleaning up in same layer
|
|
52
|
+
RUN apt-get update
|
|
53
|
+
RUN apt-get install -y curl
|
|
54
|
+
RUN apt-get clean
|
|
55
|
+
|
|
56
|
+
# ✅ FIX: Single layer with cleanup
|
|
57
|
+
RUN apt-get update && \
|
|
58
|
+
apt-get install -y --no-install-recommends curl && \
|
|
59
|
+
apt-get clean && \
|
|
60
|
+
rm -rf /var/lib/apt/lists/*
|
|
61
|
+
|
|
62
|
+
# 🔴 BUG: Copying everything before installing deps (cache invalidation)
|
|
63
|
+
COPY . /app
|
|
64
|
+
RUN npm install
|
|
65
|
+
|
|
66
|
+
# ✅ FIX: Copy package files first
|
|
67
|
+
COPY package*.json /app/
|
|
68
|
+
RUN npm install
|
|
69
|
+
COPY . /app
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Docker Compose Issues
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
# 🔴 BUG: No resource limits
|
|
76
|
+
services:
|
|
77
|
+
app:
|
|
78
|
+
image: myapp
|
|
79
|
+
|
|
80
|
+
# ✅ FIX: Set resource limits
|
|
81
|
+
services:
|
|
82
|
+
app:
|
|
83
|
+
image: myapp
|
|
84
|
+
deploy:
|
|
85
|
+
resources:
|
|
86
|
+
limits:
|
|
87
|
+
cpus: '1'
|
|
88
|
+
memory: 512M
|
|
89
|
+
reservations:
|
|
90
|
+
memory: 256M
|
|
91
|
+
|
|
92
|
+
# 🔴 BUG: Hardcoded secrets
|
|
93
|
+
services:
|
|
94
|
+
db:
|
|
95
|
+
environment:
|
|
96
|
+
POSTGRES_PASSWORD: supersecret
|
|
97
|
+
|
|
98
|
+
# ✅ FIX: Use environment files or secrets
|
|
99
|
+
services:
|
|
100
|
+
db:
|
|
101
|
+
environment:
|
|
102
|
+
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
103
|
+
# Or use Docker secrets
|
|
104
|
+
secrets:
|
|
105
|
+
- db_password
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Kubernetes Review
|
|
111
|
+
|
|
112
|
+
### Deployment Checklist
|
|
113
|
+
|
|
114
|
+
| Check | Why | Example |
|
|
115
|
+
|-------|-----|---------|
|
|
116
|
+
| **Resource Limits** | Prevent noisy neighbors | `resources.limits` |
|
|
117
|
+
| **Liveness Probe** | Restart unhealthy pods | `livenessProbe` |
|
|
118
|
+
| **Readiness Probe** | Route only to ready pods | `readinessProbe` |
|
|
119
|
+
| **Replicas** | High availability | `replicas: 3` |
|
|
120
|
+
| **PodDisruptionBudget** | Safe updates | `minAvailable: 2` |
|
|
121
|
+
| **Anti-Affinity** | Spread across nodes | `podAntiAffinity` |
|
|
122
|
+
|
|
123
|
+
### Common Kubernetes Bugs
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
# 🔴 BUG: No resource limits (can crash node)
|
|
127
|
+
apiVersion: apps/v1
|
|
128
|
+
kind: Deployment
|
|
129
|
+
spec:
|
|
130
|
+
containers:
|
|
131
|
+
- name: app
|
|
132
|
+
image: myapp
|
|
133
|
+
|
|
134
|
+
# ✅ FIX: Always set limits
|
|
135
|
+
spec:
|
|
136
|
+
containers:
|
|
137
|
+
- name: app
|
|
138
|
+
image: myapp
|
|
139
|
+
resources:
|
|
140
|
+
requests:
|
|
141
|
+
memory: "128Mi"
|
|
142
|
+
cpu: "100m"
|
|
143
|
+
limits:
|
|
144
|
+
memory: "256Mi"
|
|
145
|
+
cpu: "500m"
|
|
146
|
+
|
|
147
|
+
# 🔴 BUG: No health checks (dead pods keep receiving traffic)
|
|
148
|
+
spec:
|
|
149
|
+
containers:
|
|
150
|
+
- name: app
|
|
151
|
+
image: myapp
|
|
152
|
+
|
|
153
|
+
# ✅ FIX: Add liveness and readiness probes
|
|
154
|
+
spec:
|
|
155
|
+
containers:
|
|
156
|
+
- name: app
|
|
157
|
+
image: myapp
|
|
158
|
+
livenessProbe:
|
|
159
|
+
httpGet:
|
|
160
|
+
path: /health
|
|
161
|
+
port: 8080
|
|
162
|
+
initialDelaySeconds: 30
|
|
163
|
+
periodSeconds: 10
|
|
164
|
+
readinessProbe:
|
|
165
|
+
httpGet:
|
|
166
|
+
path: /ready
|
|
167
|
+
port: 8080
|
|
168
|
+
initialDelaySeconds: 5
|
|
169
|
+
periodSeconds: 5
|
|
170
|
+
|
|
171
|
+
# 🔴 BUG: Secrets in plain text
|
|
172
|
+
apiVersion: v1
|
|
173
|
+
kind: ConfigMap
|
|
174
|
+
data:
|
|
175
|
+
DATABASE_PASSWORD: "supersecret"
|
|
176
|
+
|
|
177
|
+
# ✅ FIX: Use Secrets (and encrypt at rest)
|
|
178
|
+
apiVersion: v1
|
|
179
|
+
kind: Secret
|
|
180
|
+
type: Opaque
|
|
181
|
+
data:
|
|
182
|
+
DATABASE_PASSWORD: c3VwZXJzZWNyZXQ= # base64 encoded
|
|
183
|
+
|
|
184
|
+
# 🔴 BUG: Using latest tag
|
|
185
|
+
spec:
|
|
186
|
+
containers:
|
|
187
|
+
- name: app
|
|
188
|
+
image: myapp:latest
|
|
189
|
+
|
|
190
|
+
# ✅ FIX: Pin specific version
|
|
191
|
+
spec:
|
|
192
|
+
containers:
|
|
193
|
+
- name: app
|
|
194
|
+
image: myapp:v1.2.3
|
|
195
|
+
imagePullPolicy: IfNotPresent
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Security Context
|
|
199
|
+
|
|
200
|
+
```yaml
|
|
201
|
+
# ✅ GOOD: Hardened security context
|
|
202
|
+
spec:
|
|
203
|
+
securityContext:
|
|
204
|
+
runAsNonRoot: true
|
|
205
|
+
runAsUser: 1000
|
|
206
|
+
fsGroup: 2000
|
|
207
|
+
containers:
|
|
208
|
+
- name: app
|
|
209
|
+
securityContext:
|
|
210
|
+
allowPrivilegeEscalation: false
|
|
211
|
+
readOnlyRootFilesystem: true
|
|
212
|
+
capabilities:
|
|
213
|
+
drop:
|
|
214
|
+
- ALL
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Terraform/IaC Review
|
|
220
|
+
|
|
221
|
+
### Common Terraform Issues
|
|
222
|
+
|
|
223
|
+
| Issue | Problem | Fix |
|
|
224
|
+
|-------|---------|-----|
|
|
225
|
+
| **No state locking** | Concurrent updates corrupt state | Use S3+DynamoDB backend |
|
|
226
|
+
| **Secrets in code** | Credentials exposed | Use variables + secrets manager |
|
|
227
|
+
| **No versioning** | Breaking provider changes | Pin provider versions |
|
|
228
|
+
| **Large blast radius** | One change affects everything | Separate state files |
|
|
229
|
+
|
|
230
|
+
### Terraform Bug Patterns
|
|
231
|
+
|
|
232
|
+
```hcl
|
|
233
|
+
# 🔴 BUG: Hardcoded secrets
|
|
234
|
+
resource "aws_db_instance" "main" {
|
|
235
|
+
password = "supersecret"
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
# ✅ FIX: Use variables and secrets manager
|
|
239
|
+
variable "db_password" {
|
|
240
|
+
type = string
|
|
241
|
+
sensitive = true
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
resource "aws_db_instance" "main" {
|
|
245
|
+
password = var.db_password
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
# 🔴 BUG: No provider version pinning
|
|
249
|
+
provider "aws" {
|
|
250
|
+
region = "us-east-1"
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
# ✅ FIX: Pin provider version
|
|
254
|
+
terraform {
|
|
255
|
+
required_providers {
|
|
256
|
+
aws = {
|
|
257
|
+
source = "hashicorp/aws"
|
|
258
|
+
version = "~> 5.0"
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
# 🔴 BUG: Public S3 bucket
|
|
264
|
+
resource "aws_s3_bucket" "data" {
|
|
265
|
+
bucket = "my-data"
|
|
266
|
+
acl = "public-read"
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
# ✅ FIX: Private with explicit policy
|
|
270
|
+
resource "aws_s3_bucket" "data" {
|
|
271
|
+
bucket = "my-data"
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
resource "aws_s3_bucket_public_access_block" "data" {
|
|
275
|
+
bucket = aws_s3_bucket.data.id
|
|
276
|
+
|
|
277
|
+
block_public_acls = true
|
|
278
|
+
block_public_policy = true
|
|
279
|
+
ignore_public_acls = true
|
|
280
|
+
restrict_public_buckets = true
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
# 🔴 BUG: Overly permissive security group
|
|
284
|
+
resource "aws_security_group" "web" {
|
|
285
|
+
ingress {
|
|
286
|
+
from_port = 0
|
|
287
|
+
to_port = 65535
|
|
288
|
+
protocol = "tcp"
|
|
289
|
+
cidr_blocks = ["0.0.0.0/0"]
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
# ✅ FIX: Least privilege
|
|
294
|
+
resource "aws_security_group" "web" {
|
|
295
|
+
ingress {
|
|
296
|
+
from_port = 443
|
|
297
|
+
to_port = 443
|
|
298
|
+
protocol = "tcp"
|
|
299
|
+
cidr_blocks = ["0.0.0.0/0"]
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## CI/CD Pipeline Review
|
|
307
|
+
|
|
308
|
+
### Pipeline Security Checklist
|
|
309
|
+
|
|
310
|
+
| Check | Risk | Mitigation |
|
|
311
|
+
|-------|------|------------|
|
|
312
|
+
| **Secrets in logs** | Credential exposure | Mask secrets |
|
|
313
|
+
| **Untrusted code** | Supply chain attack | Pin action versions |
|
|
314
|
+
| **Excessive permissions** | Lateral movement | Least privilege |
|
|
315
|
+
| **No approval gates** | Accidental deploy | Require approval |
|
|
316
|
+
|
|
317
|
+
### GitHub Actions Issues
|
|
318
|
+
|
|
319
|
+
```yaml
|
|
320
|
+
# 🔴 BUG: Using latest action version
|
|
321
|
+
- uses: actions/checkout@master
|
|
322
|
+
|
|
323
|
+
# ✅ FIX: Pin to specific version (SHA preferred)
|
|
324
|
+
- uses: actions/checkout@v4
|
|
325
|
+
# Or better: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
|
|
326
|
+
|
|
327
|
+
# 🔴 BUG: Secrets in command output
|
|
328
|
+
- run: echo "Token: ${{ secrets.API_TOKEN }}"
|
|
329
|
+
|
|
330
|
+
# ✅ FIX: Mask secrets (done automatically for secrets.*)
|
|
331
|
+
# But be careful with derived values
|
|
332
|
+
|
|
333
|
+
# 🔴 BUG: Running arbitrary PR code with secrets
|
|
334
|
+
on: pull_request_target # Dangerous!
|
|
335
|
+
jobs:
|
|
336
|
+
build:
|
|
337
|
+
env:
|
|
338
|
+
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
|
|
339
|
+
steps:
|
|
340
|
+
- uses: actions/checkout@v4
|
|
341
|
+
with:
|
|
342
|
+
ref: ${{ github.event.pull_request.head.sha }} # Untrusted code!
|
|
343
|
+
|
|
344
|
+
# ✅ FIX: Use pull_request event (no secrets access)
|
|
345
|
+
on: pull_request
|
|
346
|
+
# Or separate build from deploy with approval
|
|
347
|
+
|
|
348
|
+
# 🔴 BUG: Overly permissive permissions
|
|
349
|
+
permissions: write-all
|
|
350
|
+
|
|
351
|
+
# ✅ FIX: Least privilege
|
|
352
|
+
permissions:
|
|
353
|
+
contents: read
|
|
354
|
+
packages: write
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Pipeline Best Practices
|
|
358
|
+
|
|
359
|
+
```yaml
|
|
360
|
+
# ✅ GOOD: Complete secure pipeline example
|
|
361
|
+
name: CI/CD
|
|
362
|
+
|
|
363
|
+
on:
|
|
364
|
+
push:
|
|
365
|
+
branches: [main]
|
|
366
|
+
pull_request:
|
|
367
|
+
|
|
368
|
+
permissions:
|
|
369
|
+
contents: read
|
|
370
|
+
packages: write
|
|
371
|
+
|
|
372
|
+
jobs:
|
|
373
|
+
test:
|
|
374
|
+
runs-on: ubuntu-latest
|
|
375
|
+
steps:
|
|
376
|
+
- uses: actions/checkout@v4
|
|
377
|
+
- uses: actions/setup-node@v4
|
|
378
|
+
with:
|
|
379
|
+
node-version: '20'
|
|
380
|
+
cache: 'npm'
|
|
381
|
+
- run: npm ci
|
|
382
|
+
- run: npm test
|
|
383
|
+
|
|
384
|
+
build:
|
|
385
|
+
needs: test
|
|
386
|
+
runs-on: ubuntu-latest
|
|
387
|
+
steps:
|
|
388
|
+
- uses: actions/checkout@v4
|
|
389
|
+
- name: Build
|
|
390
|
+
run: npm run build
|
|
391
|
+
- name: Upload artifact
|
|
392
|
+
uses: actions/upload-artifact@v4
|
|
393
|
+
with:
|
|
394
|
+
name: build
|
|
395
|
+
path: dist/
|
|
396
|
+
|
|
397
|
+
deploy:
|
|
398
|
+
needs: build
|
|
399
|
+
if: github.ref == 'refs/heads/main'
|
|
400
|
+
runs-on: ubuntu-latest
|
|
401
|
+
environment: production # Requires approval
|
|
402
|
+
steps:
|
|
403
|
+
- name: Deploy
|
|
404
|
+
run: |
|
|
405
|
+
# Deploy logic here
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## Security Checklist
|
|
411
|
+
|
|
412
|
+
### Infrastructure Security Review
|
|
413
|
+
|
|
414
|
+
```markdown
|
|
415
|
+
## Infrastructure Security Checklist
|
|
416
|
+
|
|
417
|
+
### Secrets Management
|
|
418
|
+
- [ ] No secrets in code/configs
|
|
419
|
+
- [ ] Secrets encrypted at rest
|
|
420
|
+
- [ ] Secrets rotated regularly
|
|
421
|
+
- [ ] Secrets accessed via secure mechanism (vault, secrets manager)
|
|
422
|
+
|
|
423
|
+
### Network Security
|
|
424
|
+
- [ ] Security groups follow least privilege
|
|
425
|
+
- [ ] Network segmentation implemented
|
|
426
|
+
- [ ] TLS/HTTPS enforced
|
|
427
|
+
- [ ] Private subnets for databases
|
|
428
|
+
|
|
429
|
+
### Access Control
|
|
430
|
+
- [ ] Service accounts have minimal permissions
|
|
431
|
+
- [ ] No root/admin credentials in automation
|
|
432
|
+
- [ ] MFA required for human access
|
|
433
|
+
- [ ] Audit logging enabled
|
|
434
|
+
|
|
435
|
+
### Container Security
|
|
436
|
+
- [ ] Base images from trusted registry
|
|
437
|
+
- [ ] Images scanned for vulnerabilities
|
|
438
|
+
- [ ] Containers run as non-root
|
|
439
|
+
- [ ] Read-only root filesystem where possible
|
|
440
|
+
|
|
441
|
+
### CI/CD Security
|
|
442
|
+
- [ ] Action/plugin versions pinned
|
|
443
|
+
- [ ] Secrets masked in logs
|
|
444
|
+
- [ ] Approval gates for production
|
|
445
|
+
- [ ] Branch protection enabled
|
|
446
|
+
|
|
447
|
+
### Compliance
|
|
448
|
+
- [ ] Resource tagging for cost/ownership
|
|
449
|
+
- [ ] Backup policies defined
|
|
450
|
+
- [ ] Disaster recovery tested
|
|
451
|
+
- [ ] Logging and monitoring in place
|
|
452
|
+
```
|
|
453
|
+
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Version Iteration Review Guide
|
|
2
|
+
|
|
3
|
+
> Review focus for "optimization and extension": balancing new and old, ensuring seamless upgrades.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Version iterations are like upgrading a bridge while traffic flows. Review with focus on backward compatibility and zero-downtime changes.
|
|
8
|
+
|
|
9
|
+
**Target Bug Rate**: <0.2% (historical baseline helps)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Critical Review Areas
|
|
14
|
+
|
|
15
|
+
### 1. Backward Compatibility
|
|
16
|
+
|
|
17
|
+
| Aspect | Check | Breaking Change Signs |
|
|
18
|
+
|--------|-------|----------------------|
|
|
19
|
+
| **API Contracts** | Field names, types unchanged | Renamed fields, removed endpoints |
|
|
20
|
+
| **Database Schema** | Migrations reversible | Column drops, type changes |
|
|
21
|
+
| **Config Format** | Old config still works | Required new fields |
|
|
22
|
+
| **State/Storage** | Data migration handled | localStorage format change |
|
|
23
|
+
| **Dependencies** | Major version bumps | Breaking API changes |
|
|
24
|
+
|
|
25
|
+
### 2. Regression Prevention
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
## Regression Checklist
|
|
29
|
+
|
|
30
|
+
### Test Verification
|
|
31
|
+
- [ ] All existing tests pass
|
|
32
|
+
- [ ] No test files deleted/skipped
|
|
33
|
+
- [ ] Snapshot tests reviewed if changed
|
|
34
|
+
- [ ] Coverage not decreased
|
|
35
|
+
|
|
36
|
+
### Performance Baseline
|
|
37
|
+
- [ ] Load times not increased
|
|
38
|
+
- [ ] Memory usage stable
|
|
39
|
+
- [ ] Query times not degraded
|
|
40
|
+
- [ ] Bundle size not bloated
|
|
41
|
+
|
|
42
|
+
### Feature Parity
|
|
43
|
+
- [ ] All existing features work
|
|
44
|
+
- [ ] No functionality removed
|
|
45
|
+
- [ ] Edge cases still handled
|
|
46
|
+
- [ ] Error states preserved
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Migration Safety
|
|
50
|
+
|
|
51
|
+
| Migration Type | Safety Requirements | Red Flags |
|
|
52
|
+
|----------------|---------------------|-----------|
|
|
53
|
+
| **Database** | Rollback tested, zero downtime | `DROP COLUMN`, blocking locks |
|
|
54
|
+
| **Data** | Idempotent, resumable | One-shot scripts |
|
|
55
|
+
| **Config** | Default values, gradual rollout | Required immediate changes |
|
|
56
|
+
| **API** | Versioned, deprecation period | Immediate breaking changes |
|
|
57
|
+
|
|
58
|
+
### 4. Deployment Strategy
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## Deployment Safety
|
|
62
|
+
|
|
63
|
+
### Pre-Deployment
|
|
64
|
+
- [ ] Feature flags configured
|
|
65
|
+
- [ ] Canary deployment ready
|
|
66
|
+
- [ ] Rollback procedure documented
|
|
67
|
+
- [ ] Monitoring dashboards ready
|
|
68
|
+
|
|
69
|
+
### Deployment
|
|
70
|
+
- [ ] Gradual rollout (10% → 50% → 100%)
|
|
71
|
+
- [ ] Health checks passing
|
|
72
|
+
- [ ] Error rate monitored
|
|
73
|
+
- [ ] Performance metrics stable
|
|
74
|
+
|
|
75
|
+
### Post-Deployment
|
|
76
|
+
- [ ] User feedback collected
|
|
77
|
+
- [ ] Error spikes investigated
|
|
78
|
+
- [ ] Performance regression checked
|
|
79
|
+
- [ ] Documentation updated
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Common Iteration Mistakes
|
|
85
|
+
|
|
86
|
+
### Breaking Changes
|
|
87
|
+
|
|
88
|
+
| Mistake | Impact | Prevention |
|
|
89
|
+
|---------|--------|------------|
|
|
90
|
+
| Renamed API field | Client apps break | Add new, deprecate old |
|
|
91
|
+
| Changed response structure | Parse errors | Version the API |
|
|
92
|
+
| Removed endpoint | 404 errors | Deprecation headers first |
|
|
93
|
+
| Changed auth flow | Logout users | Migration period |
|
|
94
|
+
|
|
95
|
+
### Database Pitfalls
|
|
96
|
+
|
|
97
|
+
| Mistake | Impact | Prevention |
|
|
98
|
+
|---------|--------|------------|
|
|
99
|
+
| Drop column directly | Data loss | 3-phase: stop using → nullable → drop |
|
|
100
|
+
| Add NOT NULL without default | Migration fails | Add default or nullable |
|
|
101
|
+
| Rename column | Running code breaks | Add new, migrate, drop old |
|
|
102
|
+
| Large table migration | Locks, downtime | Batched, off-peak |
|
|
103
|
+
|
|
104
|
+
### Performance Regressions
|
|
105
|
+
|
|
106
|
+
| Mistake | Impact | Prevention |
|
|
107
|
+
|---------|--------|------------|
|
|
108
|
+
| Added N+1 query | Slow pages | Query monitoring |
|
|
109
|
+
| Larger bundle | Slow load | Bundle analyzer in CI |
|
|
110
|
+
| Removed caching | Higher latency | Cache hit rate monitoring |
|
|
111
|
+
| Added sync I/O | Blocked threads | Async-first pattern |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Iteration Review Checklist
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
## Version Iteration Review
|
|
119
|
+
|
|
120
|
+
### Compatibility Analysis
|
|
121
|
+
- [ ] API changes are additive only
|
|
122
|
+
- [ ] Database migrations are reversible
|
|
123
|
+
- [ ] Config changes have defaults
|
|
124
|
+
- [ ] Client SDK still compatible
|
|
125
|
+
|
|
126
|
+
### Change Impact
|
|
127
|
+
- [ ] All changed files reviewed
|
|
128
|
+
- [ ] Dependencies of changed files reviewed
|
|
129
|
+
- [ ] Tests for changed code verified
|
|
130
|
+
- [ ] Documentation updated
|
|
131
|
+
|
|
132
|
+
### Risk Assessment
|
|
133
|
+
|
|
134
|
+
| Change | Risk Level | Mitigation |
|
|
135
|
+
|--------|------------|------------|
|
|
136
|
+
| | Low/Medium/High | |
|
|
137
|
+
|
|
138
|
+
### Deployment Plan
|
|
139
|
+
- [ ] Feature flags for risky changes
|
|
140
|
+
- [ ] Canary deployment configured
|
|
141
|
+
- [ ] Rollback procedure ready
|
|
142
|
+
- [ ] Monitoring alerts configured
|
|
143
|
+
|
|
144
|
+
### Post-Release Verification
|
|
145
|
+
- [ ] Smoke tests planned
|
|
146
|
+
- [ ] Error monitoring in place
|
|
147
|
+
- [ ] Performance baseline defined
|
|
148
|
+
- [ ] User feedback channel ready
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Safe Change Patterns
|
|
154
|
+
|
|
155
|
+
### API Changes
|
|
156
|
+
|
|
157
|
+
```python
|
|
158
|
+
# 🔴 BAD: Breaking change
|
|
159
|
+
# v1: {"name": "John"}
|
|
160
|
+
# v2: {"full_name": "John"} # Breaks clients!
|
|
161
|
+
|
|
162
|
+
# ✅ GOOD: Additive change with deprecation
|
|
163
|
+
# v2: {"name": "John", "full_name": "John"} # Both fields
|
|
164
|
+
# Response header: Deprecation: "name field deprecated, use full_name"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Database Changes
|
|
168
|
+
|
|
169
|
+
```sql
|
|
170
|
+
-- 🔴 BAD: Direct column removal
|
|
171
|
+
ALTER TABLE users DROP COLUMN old_field;
|
|
172
|
+
|
|
173
|
+
-- ✅ GOOD: 3-phase removal
|
|
174
|
+
-- Phase 1: Code stops using column
|
|
175
|
+
-- Phase 2: Make nullable
|
|
176
|
+
ALTER TABLE users ALTER COLUMN old_field DROP NOT NULL;
|
|
177
|
+
-- Phase 3: Drop after verification period
|
|
178
|
+
ALTER TABLE users DROP COLUMN old_field;
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Frontend State Changes
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// 🔴 BAD: Changed localStorage format
|
|
185
|
+
// Old: localStorage.setItem('user', username)
|
|
186
|
+
// New: localStorage.setItem('user', JSON.stringify({name: username}))
|
|
187
|
+
|
|
188
|
+
// ✅ GOOD: Migration on read
|
|
189
|
+
function getUser() {
|
|
190
|
+
const raw = localStorage.getItem('user');
|
|
191
|
+
if (!raw) return null;
|
|
192
|
+
|
|
193
|
+
try {
|
|
194
|
+
// Try new format first
|
|
195
|
+
return JSON.parse(raw);
|
|
196
|
+
} catch {
|
|
197
|
+
// Migrate old format
|
|
198
|
+
const migrated = { name: raw };
|
|
199
|
+
localStorage.setItem('user', JSON.stringify(migrated));
|
|
200
|
+
return migrated;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Iteration Review Template
|
|
208
|
+
|
|
209
|
+
```markdown
|
|
210
|
+
# Version Iteration Review
|
|
211
|
+
|
|
212
|
+
## Change Summary
|
|
213
|
+
- **Version**: v1.x.x → v1.y.y
|
|
214
|
+
- **Type**: Patch / Minor / Major
|
|
215
|
+
- **Breaking Changes**: Yes / No
|
|
216
|
+
- **Migration Required**: Yes / No
|
|
217
|
+
|
|
218
|
+
## Changes Reviewed
|
|
219
|
+
|
|
220
|
+
### Added
|
|
221
|
+
-
|
|
222
|
+
|
|
223
|
+
### Changed
|
|
224
|
+
-
|
|
225
|
+
|
|
226
|
+
### Deprecated
|
|
227
|
+
-
|
|
228
|
+
|
|
229
|
+
### Removed
|
|
230
|
+
-
|
|
231
|
+
|
|
232
|
+
## Compatibility Assessment
|
|
233
|
+
|
|
234
|
+
| Aspect | Compatible | Notes |
|
|
235
|
+
|--------|------------|-------|
|
|
236
|
+
| API | ✅/❌ | |
|
|
237
|
+
| Database | ✅/❌ | |
|
|
238
|
+
| Config | ✅/❌ | |
|
|
239
|
+
| Client SDK | ✅/❌ | |
|
|
240
|
+
|
|
241
|
+
## Risk Analysis
|
|
242
|
+
|
|
243
|
+
| Risk | Probability | Impact | Mitigation |
|
|
244
|
+
|------|-------------|--------|------------|
|
|
245
|
+
| | | | |
|
|
246
|
+
|
|
247
|
+
## Deployment Recommendation
|
|
248
|
+
|
|
249
|
+
**Ready for Release**: Yes / No
|
|
250
|
+
|
|
251
|
+
**Required Before Release**:
|
|
252
|
+
1.
|
|
253
|
+
2.
|
|
254
|
+
|
|
255
|
+
**Deployment Strategy**:
|
|
256
|
+
- [ ] Canary
|
|
257
|
+
- [ ] Blue-Green
|
|
258
|
+
- [ ] Rolling
|
|
259
|
+
- [ ] Big Bang
|
|
260
|
+
|
|
261
|
+
**Rollback Plan**:
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
|