@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,477 @@
|
|
|
1
|
+
# Full-Stack Review Guide
|
|
2
|
+
|
|
3
|
+
Comprehensive guide for reviewing projects with both frontend and backend code.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Full-Stack Project Detection
|
|
8
|
+
|
|
9
|
+
### Directory Structure Indicators
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
# Monorepo Structure
|
|
13
|
+
project/
|
|
14
|
+
├── frontend/ # or client/, web/, app/
|
|
15
|
+
├── backend/ # or server/, api/
|
|
16
|
+
└── shared/ # or common/, types/
|
|
17
|
+
|
|
18
|
+
# Package Structure
|
|
19
|
+
project/
|
|
20
|
+
├── packages/
|
|
21
|
+
│ ├── client/
|
|
22
|
+
│ ├── server/
|
|
23
|
+
│ └── shared/
|
|
24
|
+
|
|
25
|
+
# Single Repo with Mixed
|
|
26
|
+
project/
|
|
27
|
+
├── src/
|
|
28
|
+
│ ├── client/
|
|
29
|
+
│ ├── server/
|
|
30
|
+
│ └── shared/
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### File Type Indicators
|
|
34
|
+
|
|
35
|
+
| Stack | File Patterns |
|
|
36
|
+
|-------|---------------|
|
|
37
|
+
| Frontend | `.tsx`, `.jsx`, `.vue`, `.svelte`, `component.ts` |
|
|
38
|
+
| Backend Python | `.py`, `views.py`, `routes.py`, `services.py` |
|
|
39
|
+
| Backend Node | `.ts` in `/api/`, `/routes/`, `/controllers/` |
|
|
40
|
+
| Shared | `/shared/`, `/common/`, `/types/` |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Mandatory Full-Stack Review Rules
|
|
45
|
+
|
|
46
|
+
### Rule 1: Backend API Change → Review Frontend Consumers
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Backend Change: POST /api/users response changed
|
|
50
|
+
↓
|
|
51
|
+
MUST REVIEW:
|
|
52
|
+
- All frontend files that call POST /api/users
|
|
53
|
+
- All components that display user data
|
|
54
|
+
- All stores/state that cache user data
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Rule 2: Frontend API Call Change → Review Backend Endpoint
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Frontend Change: Added new API call to /api/settings
|
|
61
|
+
↓
|
|
62
|
+
MUST REVIEW:
|
|
63
|
+
- Backend endpoint /api/settings exists
|
|
64
|
+
- Request payload matches backend expectation
|
|
65
|
+
- Response handling matches backend response
|
|
66
|
+
- Error handling covers all backend error codes
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Rule 3: New Feature → Review Entire Stack
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
New Feature: User Profile Edit
|
|
73
|
+
↓
|
|
74
|
+
MUST REVIEW:
|
|
75
|
+
- Backend: Model, Repository, Service, Controller, Routes
|
|
76
|
+
- Frontend: Component, Hook/Store, API call, Types
|
|
77
|
+
- Shared: Types, Validation schemas
|
|
78
|
+
- Tests: Backend unit, Frontend unit, Integration
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Rule 4: Shared Types Change → Verify Both Sides
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Shared Type Change: User interface updated
|
|
85
|
+
↓
|
|
86
|
+
MUST VERIFY:
|
|
87
|
+
- Backend serialization matches new type
|
|
88
|
+
- Frontend deserialization handles new fields
|
|
89
|
+
- All consumers updated
|
|
90
|
+
- Migrations in place for DB changes
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Rule 5: Auth Change → Full Security Review
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Auth Change: Any auth-related code
|
|
97
|
+
↓
|
|
98
|
+
MUST REVIEW:
|
|
99
|
+
- Backend: Token generation, validation, refresh
|
|
100
|
+
- Backend: Permission checks, middleware
|
|
101
|
+
- Frontend: Token storage, transmission
|
|
102
|
+
- Frontend: Route guards, permission checks
|
|
103
|
+
- Full Flow: Login → Action → Logout
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## API Contract Verification Template
|
|
109
|
+
|
|
110
|
+
### For Each Endpoint
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
## Endpoint: [METHOD] [PATH]
|
|
114
|
+
|
|
115
|
+
### Request Contract
|
|
116
|
+
|
|
117
|
+
#### Backend Definition
|
|
118
|
+
```python
|
|
119
|
+
# FastAPI example
|
|
120
|
+
class CreateUserRequest(BaseModel):
|
|
121
|
+
email: str = Field(..., regex=r'^[\w\.-]+@[\w\.-]+\.\w+$')
|
|
122
|
+
password: str = Field(..., min_length=8)
|
|
123
|
+
name: Optional[str] = Field(None, max_length=100)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Frontend Definition
|
|
127
|
+
```typescript
|
|
128
|
+
interface CreateUserRequest {
|
|
129
|
+
email: string;
|
|
130
|
+
password: string;
|
|
131
|
+
name?: string;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### Contract Comparison
|
|
136
|
+
| Field | Backend | Frontend | Match |
|
|
137
|
+
|-------|---------|----------|-------|
|
|
138
|
+
| email | str, required, email regex | string, required | ⚠️ No regex validation |
|
|
139
|
+
| password | str, required, min 8 | string, required | ⚠️ No min length |
|
|
140
|
+
| name | Optional[str], max 100 | string?, no limit | ⚠️ No max length |
|
|
141
|
+
|
|
142
|
+
### Response Contract
|
|
143
|
+
|
|
144
|
+
#### Success Response (200)
|
|
145
|
+
| Field | Backend | Frontend | Match |
|
|
146
|
+
|-------|---------|----------|-------|
|
|
147
|
+
| id | str (UUID) | string | ✅ |
|
|
148
|
+
| email | str | string | ✅ |
|
|
149
|
+
| created_at | datetime (ISO) | string (Date) | ⚠️ Parsing needed |
|
|
150
|
+
|
|
151
|
+
#### Error Responses
|
|
152
|
+
| Status | Backend Error | Frontend Handler | Coverage |
|
|
153
|
+
|--------|---------------|------------------|----------|
|
|
154
|
+
| 400 | ValidationError | Shows field errors | ✅ |
|
|
155
|
+
| 401 | Unauthorized | Redirects to login | ✅ |
|
|
156
|
+
| 403 | Forbidden | Shows access denied | ✅ |
|
|
157
|
+
| 404 | NotFound | Shows not found | ✅ |
|
|
158
|
+
| 409 | Conflict (email exists) | Shows specific error | ❌ Missing |
|
|
159
|
+
| 422 | UnprocessableEntity | Shows generic error | ⚠️ Generic |
|
|
160
|
+
| 429 | RateLimited | No handler | ❌ Missing |
|
|
161
|
+
| 500 | ServerError | Shows retry option | ✅ |
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Type Synchronization Guide
|
|
167
|
+
|
|
168
|
+
### Python (Pydantic) ↔ TypeScript
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
# Backend: Python Pydantic
|
|
172
|
+
from datetime import datetime
|
|
173
|
+
from typing import Optional, List
|
|
174
|
+
from pydantic import BaseModel
|
|
175
|
+
from enum import Enum
|
|
176
|
+
|
|
177
|
+
class UserRole(str, Enum):
|
|
178
|
+
ADMIN = "admin"
|
|
179
|
+
USER = "user"
|
|
180
|
+
|
|
181
|
+
class User(BaseModel):
|
|
182
|
+
id: str
|
|
183
|
+
email: str
|
|
184
|
+
name: Optional[str]
|
|
185
|
+
role: UserRole
|
|
186
|
+
created_at: datetime
|
|
187
|
+
tags: List[str]
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
// Frontend: TypeScript
|
|
192
|
+
type UserRole = 'admin' | 'user';
|
|
193
|
+
|
|
194
|
+
interface User {
|
|
195
|
+
id: string;
|
|
196
|
+
email: string;
|
|
197
|
+
name: string | null; // ⚠️ Optional vs null
|
|
198
|
+
role: UserRole;
|
|
199
|
+
createdAt: string; // ⚠️ Naming convention
|
|
200
|
+
tags: string[];
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Common Sync Issues
|
|
205
|
+
|
|
206
|
+
| Issue | Backend | Frontend | Solution |
|
|
207
|
+
|-------|---------|----------|----------|
|
|
208
|
+
| Naming convention | `snake_case` | `camelCase` | Use serializer/transformer |
|
|
209
|
+
| Optional handling | `Optional[T]` | `T \| null` or `T?` | Document convention |
|
|
210
|
+
| Date format | `datetime` | `string` or `Date` | Parse on frontend |
|
|
211
|
+
| Enum | Python Enum | Union type | Keep values synced |
|
|
212
|
+
| ID type | UUID string | string | Consistent typing |
|
|
213
|
+
|
|
214
|
+
### Type Generation Tools
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Generate TypeScript from Python (FastAPI)
|
|
218
|
+
pip install datamodel-code-generator
|
|
219
|
+
datamodel-codegen --input openapi.json --output types.ts
|
|
220
|
+
|
|
221
|
+
# Generate from OpenAPI
|
|
222
|
+
npx openapi-typescript openapi.yaml --output types.ts
|
|
223
|
+
|
|
224
|
+
# Keep in sync with JSON Schema
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Data Flow Verification
|
|
230
|
+
|
|
231
|
+
### Template: Feature Flow
|
|
232
|
+
|
|
233
|
+
```markdown
|
|
234
|
+
## Feature: [Name]
|
|
235
|
+
|
|
236
|
+
### User Journey
|
|
237
|
+
1. User navigates to [page]
|
|
238
|
+
2. User fills [form/interacts]
|
|
239
|
+
3. System [action]
|
|
240
|
+
4. User sees [result]
|
|
241
|
+
|
|
242
|
+
### Technical Flow
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
[Frontend Entry Point]
|
|
246
|
+
↓
|
|
247
|
+
Page: src/pages/Feature.tsx
|
|
248
|
+
↓ User clicks action
|
|
249
|
+
Component: src/components/FeatureForm.tsx
|
|
250
|
+
↓ handleSubmit()
|
|
251
|
+
Hook: src/hooks/useFeature.ts
|
|
252
|
+
↓ mutation.mutate(data)
|
|
253
|
+
API Client: src/api/feature.ts
|
|
254
|
+
↓ POST /api/feature { payload }
|
|
255
|
+
────────── NETWORK ──────────
|
|
256
|
+
↓
|
|
257
|
+
Router: backend/routes/feature.py
|
|
258
|
+
↓ Middleware: auth, validation
|
|
259
|
+
Controller: backend/controllers/feature.py
|
|
260
|
+
↓ Business logic validation
|
|
261
|
+
Service: backend/services/feature.py
|
|
262
|
+
↓ Domain logic
|
|
263
|
+
Repository: backend/repos/feature.py
|
|
264
|
+
↓ Database operation
|
|
265
|
+
Database: Feature table
|
|
266
|
+
↓ Return result
|
|
267
|
+
────────── RETURN ──────────
|
|
268
|
+
↓
|
|
269
|
+
API Client: Parse response
|
|
270
|
+
↓
|
|
271
|
+
Hook: Update cache/state
|
|
272
|
+
↓
|
|
273
|
+
Component: Re-render with new data
|
|
274
|
+
↓
|
|
275
|
+
User: Sees success message
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Verification Checklist
|
|
279
|
+
|
|
280
|
+
| Step | Component | Verified | Issues |
|
|
281
|
+
|------|-----------|----------|--------|
|
|
282
|
+
| 1 | Page routing | ✅ | - |
|
|
283
|
+
| 2 | Form validation | ⚠️ | Missing email check |
|
|
284
|
+
| 3 | API call | ✅ | - |
|
|
285
|
+
| 4 | Auth middleware | ✅ | - |
|
|
286
|
+
| 5 | Input validation | ⚠️ | Differs from frontend |
|
|
287
|
+
| 6 | Business logic | ✅ | - |
|
|
288
|
+
| 7 | Database operation | ✅ | - |
|
|
289
|
+
| 8 | Response format | ✅ | - |
|
|
290
|
+
| 9 | Error handling | ❌ | Missing 409 handler |
|
|
291
|
+
| 10 | State update | ✅ | - |
|
|
292
|
+
| 11 | UI feedback | ⚠️ | No loading state |
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Security Review (Full-Stack)
|
|
298
|
+
|
|
299
|
+
### Authentication Flow
|
|
300
|
+
|
|
301
|
+
```markdown
|
|
302
|
+
## Auth Flow Review
|
|
303
|
+
|
|
304
|
+
### Token Generation (Backend)
|
|
305
|
+
| Check | Status | Notes |
|
|
306
|
+
|-------|--------|-------|
|
|
307
|
+
| Strong secret | ✅ | From env, 256+ bits |
|
|
308
|
+
| Appropriate expiry | ⚠️ | 24h (too long?) |
|
|
309
|
+
| Necessary claims only | ✅ | id, role only |
|
|
310
|
+
| No sensitive data in token | ✅ | - |
|
|
311
|
+
|
|
312
|
+
### Token Storage (Frontend)
|
|
313
|
+
| Check | Status | Notes |
|
|
314
|
+
|-------|--------|-------|
|
|
315
|
+
| httpOnly cookie | ❌ | Using localStorage |
|
|
316
|
+
| Secure flag | N/A | (if cookie) |
|
|
317
|
+
| SameSite flag | N/A | (if cookie) |
|
|
318
|
+
| XSS protection | ⚠️ | localStorage vulnerable |
|
|
319
|
+
|
|
320
|
+
### Token Transmission
|
|
321
|
+
| Check | Status | Notes |
|
|
322
|
+
|-------|--------|-------|
|
|
323
|
+
| HTTPS only | ✅ | Enforced |
|
|
324
|
+
| Authorization header | ✅ | Bearer token |
|
|
325
|
+
| No token in URL | ✅ | - |
|
|
326
|
+
|
|
327
|
+
### Session Management
|
|
328
|
+
| Check | Status | Notes |
|
|
329
|
+
|-------|--------|-------|
|
|
330
|
+
| Token refresh | ✅ | Implemented |
|
|
331
|
+
| Logout invalidation | ❌ | Token still valid |
|
|
332
|
+
| Concurrent sessions | ⚠️ | No limit |
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Authorization Review
|
|
336
|
+
|
|
337
|
+
```markdown
|
|
338
|
+
## Authorization Review
|
|
339
|
+
|
|
340
|
+
### Backend Checks
|
|
341
|
+
| Resource | Method | Auth Required | Permission Check | Status |
|
|
342
|
+
|----------|--------|---------------|------------------|--------|
|
|
343
|
+
| /users | GET | ✅ | admin only | ✅ |
|
|
344
|
+
| /users/:id | GET | ✅ | owner or admin | ✅ |
|
|
345
|
+
| /users/:id | PUT | ✅ | owner only | ✅ |
|
|
346
|
+
| /users/:id | DELETE | ✅ | admin only | ✅ |
|
|
347
|
+
| /settings | GET | ✅ | any user | ⚠️ No check |
|
|
348
|
+
|
|
349
|
+
### Frontend Guards
|
|
350
|
+
| Route | Auth Guard | Role Guard | Status |
|
|
351
|
+
|-------|------------|------------|--------|
|
|
352
|
+
| /admin/* | ✅ | ✅ admin | ✅ |
|
|
353
|
+
| /profile | ✅ | - | ✅ |
|
|
354
|
+
| /settings | ✅ | - | ✅ |
|
|
355
|
+
| /public | - | - | ✅ |
|
|
356
|
+
| /api-docs | ❌ | - | 🔴 Should protect |
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## Common Full-Stack Issues
|
|
362
|
+
|
|
363
|
+
### 1. API Contract Mismatch
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
Issue: Frontend sends camelCase, backend expects snake_case
|
|
367
|
+
Fix: Add request/response transformer
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### 2. Missing Error Handler
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
Issue: Backend returns 409 Conflict, frontend shows generic error
|
|
374
|
+
Fix: Add specific error handler for 409
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### 3. Type Drift
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
Issue: Backend adds field, frontend type not updated
|
|
381
|
+
Fix: Generate types from OpenAPI, add to CI
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### 4. Auth State Desync
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
Issue: Backend invalidates token, frontend still shows logged in
|
|
388
|
+
Fix: Add token validation on app load
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### 5. Validation Mismatch
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
Issue: Frontend allows input, backend rejects
|
|
395
|
+
Fix: Share validation rules or generate from schema
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### 6. Timezone Issues
|
|
399
|
+
|
|
400
|
+
```
|
|
401
|
+
Issue: Backend returns UTC, frontend displays wrong time
|
|
402
|
+
Fix: Standardize on UTC, convert on display
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### 7. Pagination Mismatch
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
Issue: Backend uses offset/limit, frontend expects page/size
|
|
409
|
+
Fix: Align pagination parameters
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### 8. File Upload Issues
|
|
413
|
+
|
|
414
|
+
```
|
|
415
|
+
Issue: Frontend sends multipart, backend expects JSON
|
|
416
|
+
Fix: Align content types and handlers
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## Full-Stack Review Checklist
|
|
422
|
+
|
|
423
|
+
### Before Merge
|
|
424
|
+
|
|
425
|
+
- [ ] All backend files reviewed (100%)
|
|
426
|
+
- [ ] All frontend files reviewed (100%)
|
|
427
|
+
- [ ] API contracts verified for all endpoints
|
|
428
|
+
- [ ] Types synchronized across stack
|
|
429
|
+
- [ ] Error handling covers all status codes
|
|
430
|
+
- [ ] Auth flow verified end-to-end
|
|
431
|
+
- [ ] CORS configured correctly
|
|
432
|
+
- [ ] CSRF protection in place
|
|
433
|
+
- [ ] Input validation aligned
|
|
434
|
+
- [ ] Response format consistent
|
|
435
|
+
- [ ] Tests exist for integration points
|
|
436
|
+
|
|
437
|
+
### Integration Test Scenarios
|
|
438
|
+
|
|
439
|
+
- [ ] Happy path works end-to-end
|
|
440
|
+
- [ ] Auth failure handled gracefully
|
|
441
|
+
- [ ] Network error handled
|
|
442
|
+
- [ ] Validation error displayed
|
|
443
|
+
- [ ] Empty state displayed
|
|
444
|
+
- [ ] Loading state displayed
|
|
445
|
+
- [ ] Concurrent requests handled
|
|
446
|
+
- [ ] Token refresh works
|
|
447
|
+
- [ ] Logout clears all state
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Review Report Full-Stack Section
|
|
452
|
+
|
|
453
|
+
```markdown
|
|
454
|
+
## Full-Stack Integration Summary
|
|
455
|
+
|
|
456
|
+
### Coverage
|
|
457
|
+
| Stack | Files | Reviewed | Issues |
|
|
458
|
+
|-------|-------|----------|--------|
|
|
459
|
+
| Backend | X | X (100%) | N |
|
|
460
|
+
| Frontend | Y | Y (100%) | M |
|
|
461
|
+
| Integration | Z | Z (100%) | O |
|
|
462
|
+
|
|
463
|
+
### API Contract Status
|
|
464
|
+
| Endpoint | Backend | Frontend | Contract | Issues |
|
|
465
|
+
|----------|---------|----------|----------|--------|
|
|
466
|
+
| POST /login | ✅ | ✅ | ✅ | 0 |
|
|
467
|
+
| GET /users | ✅ | ✅ | ⚠️ | 1 (type) |
|
|
468
|
+
|
|
469
|
+
### Critical Integration Issues
|
|
470
|
+
1. [Issue 1 with file references]
|
|
471
|
+
2. [Issue 2 with file references]
|
|
472
|
+
|
|
473
|
+
### Recommendations
|
|
474
|
+
1. [Recommendation 1]
|
|
475
|
+
2. [Recommendation 2]
|
|
476
|
+
```
|
|
477
|
+
|