@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,266 @@
|
|
|
1
|
+
# Requirement Analysis Workflow Templates
|
|
2
|
+
|
|
3
|
+
This document contains detailed templates for each phase of the requirement analysis workflow. Use these templates when executing the corresponding phases.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Phase 2: User Persona Template
|
|
8
|
+
|
|
9
|
+
Define at least 2-3 user personas using this template:
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
## User Persona: [Name]
|
|
13
|
+
|
|
14
|
+
**Demographics**
|
|
15
|
+
- Age range:
|
|
16
|
+
- Tech proficiency: Beginner / Intermediate / Advanced
|
|
17
|
+
- Device preference: Mobile / Desktop / Both
|
|
18
|
+
- Usage frequency: Daily / Weekly / Monthly
|
|
19
|
+
|
|
20
|
+
**Goals**
|
|
21
|
+
- Primary goal:
|
|
22
|
+
- Secondary goals:
|
|
23
|
+
|
|
24
|
+
**Pain Points**
|
|
25
|
+
- Current frustrations:
|
|
26
|
+
- What they've tried:
|
|
27
|
+
|
|
28
|
+
**Behaviors**
|
|
29
|
+
- How they currently solve this problem:
|
|
30
|
+
- Key workflows:
|
|
31
|
+
|
|
32
|
+
**Quotes** (Representative voice)
|
|
33
|
+
- "I wish I could..."
|
|
34
|
+
- "It's frustrating when..."
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Phase 3: User Story Mapping Template
|
|
40
|
+
|
|
41
|
+
Create comprehensive user story map:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## User Story Map
|
|
45
|
+
|
|
46
|
+
### Epic: [Feature Name]
|
|
47
|
+
|
|
48
|
+
#### User Journey Phases
|
|
49
|
+
1. [Discovery] -> 2. [Onboarding] -> 3. [Core Action] -> 4. [Completion] -> 5. [Return]
|
|
50
|
+
|
|
51
|
+
#### Stories by Phase
|
|
52
|
+
|
|
53
|
+
**Phase 1: Discovery**
|
|
54
|
+
| Story ID | As a... | I want to... | So that... | Priority |
|
|
55
|
+
|----------|---------|--------------|------------|----------|
|
|
56
|
+
| US-001 | new user | see feature benefits | I understand its value | Must |
|
|
57
|
+
| US-002 | returning user | quickly access feature | I save time | Must |
|
|
58
|
+
|
|
59
|
+
**Phase 2: Core Action**
|
|
60
|
+
| Story ID | As a... | I want to... | So that... | Priority |
|
|
61
|
+
|----------|---------|--------------|------------|----------|
|
|
62
|
+
| US-010 | ... | ... | ... | ... |
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Priority Legend (MoSCoW)**:
|
|
66
|
+
- **Must** - Critical for launch
|
|
67
|
+
- **Should** - Important but not blocking
|
|
68
|
+
- **Could** - Nice to have
|
|
69
|
+
- **Won't** - Explicitly excluded
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Phase 4: Feature Specification Template
|
|
74
|
+
|
|
75
|
+
For EACH page/screen, complete this template:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## Feature: [Feature Name]
|
|
79
|
+
### Page: [Page Name]
|
|
80
|
+
|
|
81
|
+
#### 1. Purpose & Context
|
|
82
|
+
- **What**: What does this page do?
|
|
83
|
+
- **Why**: Why does the user need this?
|
|
84
|
+
- **When**: When do users access this page?
|
|
85
|
+
- **Entry points**: How do users get here?
|
|
86
|
+
- **Exit points**: Where do users go next?
|
|
87
|
+
|
|
88
|
+
#### 2. Page Layout & Components
|
|
89
|
+
|
|
90
|
+
| Component | Type | Description | Required? |
|
|
91
|
+
|-----------|------|-------------|-----------|
|
|
92
|
+
| Header | Navigation | Logo, nav links, user menu | Yes |
|
|
93
|
+
| Hero Section | Content | Main CTA, value proposition | Yes |
|
|
94
|
+
| Form | Interactive | User input fields | Yes |
|
|
95
|
+
| ... | ... | ... | ... |
|
|
96
|
+
|
|
97
|
+
#### 3. Component Details
|
|
98
|
+
|
|
99
|
+
For EACH component:
|
|
100
|
+
|
|
101
|
+
##### Component: [Name]
|
|
102
|
+
- **Purpose**: Why does this exist?
|
|
103
|
+
- **Visual**: Size, position, styling notes
|
|
104
|
+
- **Content**: Text, images, data displayed
|
|
105
|
+
- **States**: All possible states (see state matrix)
|
|
106
|
+
- **Interactions**: What happens on click/hover/etc
|
|
107
|
+
- **Validation**: Input rules if applicable
|
|
108
|
+
- **Accessibility**: ARIA labels, keyboard nav
|
|
109
|
+
|
|
110
|
+
#### 4. State Matrix
|
|
111
|
+
|
|
112
|
+
| State | Trigger | Visual Change | User Action |
|
|
113
|
+
|-------|---------|---------------|-------------|
|
|
114
|
+
| Default | Page load | Normal appearance | Can interact |
|
|
115
|
+
| Loading | Action initiated | Spinner, disabled | Wait |
|
|
116
|
+
| Success | Action complete | Green feedback | Continue |
|
|
117
|
+
| Error | Action failed | Red message | Retry/Fix |
|
|
118
|
+
| Empty | No data | Empty state UI | Add data |
|
|
119
|
+
| Disabled | No permission | Grayed out | None |
|
|
120
|
+
|
|
121
|
+
#### 5. User Flow (Mermaid)
|
|
122
|
+
|
|
123
|
+
```mermaid
|
|
124
|
+
graph TD
|
|
125
|
+
A[Entry Point] --> B{User Action}
|
|
126
|
+
B -->|Valid| C[Process]
|
|
127
|
+
B -->|Invalid| D[Error Message]
|
|
128
|
+
C --> E{Result}
|
|
129
|
+
E -->|Success| F[Success State]
|
|
130
|
+
E -->|Failure| G[Failure State]
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### 6. Error Scenarios
|
|
134
|
+
|
|
135
|
+
| Error Code | Scenario | User Message | Recovery Action |
|
|
136
|
+
|------------|----------|--------------|-----------------|
|
|
137
|
+
| E001 | Network timeout | "Connection lost. Retry?" | Retry button |
|
|
138
|
+
| E002 | Invalid input | "[Field] is invalid" | Highlight field |
|
|
139
|
+
| E003 | Server error | "Something went wrong" | Contact support |
|
|
140
|
+
| ... | ... | ... | ... |
|
|
141
|
+
|
|
142
|
+
#### 7. Acceptance Criteria (Gherkin)
|
|
143
|
+
|
|
144
|
+
```gherkin
|
|
145
|
+
Feature: [Feature Name]
|
|
146
|
+
|
|
147
|
+
Scenario: Successful [action]
|
|
148
|
+
Given I am on the [page]
|
|
149
|
+
And I am logged in as [user type]
|
|
150
|
+
When I [action]
|
|
151
|
+
Then I should see [expected result]
|
|
152
|
+
And [side effect] should happen
|
|
153
|
+
|
|
154
|
+
Scenario: Failed [action] due to [reason]
|
|
155
|
+
Given I am on the [page]
|
|
156
|
+
When I [action] with [invalid data]
|
|
157
|
+
Then I should see error message "[message]"
|
|
158
|
+
And the form should not be submitted
|
|
159
|
+
```
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Phase 5: API & Data Requirements Template
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
## Data Requirements
|
|
168
|
+
|
|
169
|
+
### Data Entities
|
|
170
|
+
| Entity | Fields | Source | Update Frequency |
|
|
171
|
+
|--------|--------|--------|-----------------|
|
|
172
|
+
| User | id, name, email | Backend | On change |
|
|
173
|
+
| ... | ... | ... | ... |
|
|
174
|
+
|
|
175
|
+
### API Endpoints Needed
|
|
176
|
+
| Method | Endpoint | Purpose | Request | Response |
|
|
177
|
+
|--------|----------|---------|---------|----------|
|
|
178
|
+
| GET | /api/users | List users | - | User[] |
|
|
179
|
+
| POST | /api/users | Create user | UserInput | User |
|
|
180
|
+
| ... | ... | ... | ... | ... |
|
|
181
|
+
|
|
182
|
+
### Data Validation Rules
|
|
183
|
+
| Field | Type | Required | Validation |
|
|
184
|
+
|-------|------|----------|------------|
|
|
185
|
+
| email | string | Yes | Valid email format |
|
|
186
|
+
| password | string | Yes | Min 8 chars, 1 number, 1 special |
|
|
187
|
+
| ... | ... | ... | ... |
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Phase 6: Analytics & Tracking Template
|
|
193
|
+
|
|
194
|
+
```markdown
|
|
195
|
+
## Analytics Requirements
|
|
196
|
+
|
|
197
|
+
### Key Metrics
|
|
198
|
+
| Metric | Definition | Target | Tracking Event |
|
|
199
|
+
|--------|------------|--------|----------------|
|
|
200
|
+
| Conversion Rate | Users completing action / Total users | >5% | action_complete |
|
|
201
|
+
| Time to Complete | Avg time from start to finish | <60s | action_duration |
|
|
202
|
+
| Error Rate | Failed actions / Total attempts | <2% | action_error |
|
|
203
|
+
|
|
204
|
+
### Event Tracking
|
|
205
|
+
| Event Name | Trigger | Properties |
|
|
206
|
+
|------------|---------|------------|
|
|
207
|
+
| page_view | Page load | page_name, referrer |
|
|
208
|
+
| button_click | Button clicked | button_id, button_text |
|
|
209
|
+
| form_submit | Form submitted | form_id, success |
|
|
210
|
+
| error_shown | Error displayed | error_code, error_message |
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Phase 7: Non-Functional Requirements Template
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
## Non-Functional Requirements
|
|
219
|
+
|
|
220
|
+
### Performance
|
|
221
|
+
- Page load time: <=2s on 3G
|
|
222
|
+
- Time to interactive: <=3s
|
|
223
|
+
- API response time: <=500ms p95
|
|
224
|
+
|
|
225
|
+
### Security
|
|
226
|
+
- Authentication required: Yes/No
|
|
227
|
+
- Authorization levels: [List roles]
|
|
228
|
+
- Data sensitivity: Public/Internal/Confidential/Restricted
|
|
229
|
+
|
|
230
|
+
### Accessibility
|
|
231
|
+
- WCAG level: AA
|
|
232
|
+
- Screen reader support: Required
|
|
233
|
+
- Keyboard navigation: Full support
|
|
234
|
+
|
|
235
|
+
### Browser Support
|
|
236
|
+
- Chrome: Latest 2 versions
|
|
237
|
+
- Firefox: Latest 2 versions
|
|
238
|
+
- Safari: Latest 2 versions
|
|
239
|
+
- Edge: Latest 2 versions
|
|
240
|
+
- Mobile: iOS Safari, Chrome Android
|
|
241
|
+
|
|
242
|
+
### Internationalization
|
|
243
|
+
- Languages: [List]
|
|
244
|
+
- RTL support: Yes/No
|
|
245
|
+
- Date/time formats: Locale-aware
|
|
246
|
+
- Currency formats: Locale-aware
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Deliverables Checklist
|
|
252
|
+
|
|
253
|
+
Every requirement analysis must produce:
|
|
254
|
+
|
|
255
|
+
- [ ] **Project Brief** - Business context, goals, constraints
|
|
256
|
+
- [ ] **User Personas** (2-3 minimum)
|
|
257
|
+
- [ ] **User Story Map** - All stories with priorities
|
|
258
|
+
- [ ] **Feature Specifications** - One per page/screen
|
|
259
|
+
- [ ] **State Matrices** - All component states
|
|
260
|
+
- [ ] **User Flow Diagrams** - Mermaid flowcharts
|
|
261
|
+
- [ ] **Error Scenario Matrix** - All error cases
|
|
262
|
+
- [ ] **Acceptance Criteria** - Gherkin format
|
|
263
|
+
- [ ] **API Requirements** - Endpoints, data models
|
|
264
|
+
- [ ] **Analytics Requirements** - Events, metrics
|
|
265
|
+
- [ ] **Non-Functional Requirements** - Performance, security, a11y
|
|
266
|
+
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react-best-practices
|
|
3
|
+
description: |
|
|
4
|
+
React and Next.js performance optimization guidelines from Vercel Engineering.
|
|
5
|
+
|
|
6
|
+
Use when:
|
|
7
|
+
- Writing new React components or Next.js pages
|
|
8
|
+
- Implementing data fetching (client or server-side)
|
|
9
|
+
- Reviewing code for performance issues
|
|
10
|
+
- Optimizing bundle size or load times
|
|
11
|
+
- Refactoring React/Next.js codebases
|
|
12
|
+
|
|
13
|
+
Key Features:
|
|
14
|
+
- 40+ rules across 8 categories, prioritized by impact
|
|
15
|
+
- Detailed examples comparing incorrect vs correct implementations
|
|
16
|
+
- Specific impact metrics to guide optimization decisions
|
|
17
|
+
|
|
18
|
+
Categories (by priority):
|
|
19
|
+
- CRITICAL: Eliminating Waterfalls, Bundle Size Optimization
|
|
20
|
+
- HIGH: Server-Side Performance
|
|
21
|
+
- MEDIUM-HIGH: Client-Side Data Fetching
|
|
22
|
+
- MEDIUM: Re-render Optimization, Rendering Performance
|
|
23
|
+
- LOW-MEDIUM: JavaScript Performance
|
|
24
|
+
- LOW: Advanced Patterns
|
|
25
|
+
allowed-tools: [read, write, execute, grep, glob]
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# React Best Practices
|
|
29
|
+
|
|
30
|
+
**Version 1.0.0** | Vercel Engineering | January 2026
|
|
31
|
+
|
|
32
|
+
Comprehensive performance optimization guide for React and Next.js applications.
|
|
33
|
+
|
|
34
|
+
## Quick Reference
|
|
35
|
+
|
|
36
|
+
| Category | Impact | Key Rules |
|
|
37
|
+
|----------|--------|-----------|
|
|
38
|
+
| Eliminating Waterfalls | **CRITICAL** | Promise.all(), defer await, Suspense boundaries |
|
|
39
|
+
| Bundle Size | **CRITICAL** | Avoid barrel imports, dynamic imports, preload |
|
|
40
|
+
| Server-Side | **HIGH** | LRU cache, React.cache(), parallel fetching |
|
|
41
|
+
| Client-Side | **MEDIUM-HIGH** | SWR deduplication, event listener dedup |
|
|
42
|
+
| Re-render | **MEDIUM** | Functional setState, lazy init, transitions |
|
|
43
|
+
| Rendering | **MEDIUM** | content-visibility, hoist JSX, Activity |
|
|
44
|
+
| JavaScript | **LOW-MEDIUM** | Set/Map lookups, cache function results |
|
|
45
|
+
| Advanced | **LOW** | useLatest, event handler refs |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Decision Tree
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Performance Issue?
|
|
53
|
+
│
|
|
54
|
+
├── Slow initial load?
|
|
55
|
+
│ ├── Check bundle size → `references/bundle-optimization.md`
|
|
56
|
+
│ └── Check waterfalls → `references/eliminating-waterfalls.md`
|
|
57
|
+
│
|
|
58
|
+
├── Slow server response?
|
|
59
|
+
│ └── Check server patterns → `references/server-performance.md`
|
|
60
|
+
│
|
|
61
|
+
├── UI feels sluggish?
|
|
62
|
+
│ ├── Check re-renders → `references/rerender-optimization.md`
|
|
63
|
+
│ └── Check rendering → `references/rendering-performance.md`
|
|
64
|
+
│
|
|
65
|
+
└── Data fetching issues?
|
|
66
|
+
└── Check client patterns → `references/client-data-fetching.md`
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 🔴 Critical Rules (Must Follow)
|
|
72
|
+
|
|
73
|
+
### 1. Avoid Barrel File Imports
|
|
74
|
+
|
|
75
|
+
**Impact: 200-800ms import cost**
|
|
76
|
+
|
|
77
|
+
```tsx
|
|
78
|
+
// ❌ Incorrect: imports entire library
|
|
79
|
+
import { Check, X, Menu } from 'lucide-react'
|
|
80
|
+
|
|
81
|
+
// ✅ Correct: imports only what you need
|
|
82
|
+
import Check from 'lucide-react/dist/esm/icons/check'
|
|
83
|
+
import X from 'lucide-react/dist/esm/icons/x'
|
|
84
|
+
|
|
85
|
+
// ✅ Alternative: Next.js 13.5+ config
|
|
86
|
+
// next.config.js
|
|
87
|
+
module.exports = {
|
|
88
|
+
experimental: {
|
|
89
|
+
optimizePackageImports: ['lucide-react', '@mui/material']
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 2. Promise.all() for Independent Operations
|
|
95
|
+
|
|
96
|
+
**Impact: 2-10× improvement**
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
// ❌ Incorrect: sequential, 3 round trips
|
|
100
|
+
const user = await fetchUser()
|
|
101
|
+
const posts = await fetchPosts()
|
|
102
|
+
const comments = await fetchComments()
|
|
103
|
+
|
|
104
|
+
// ✅ Correct: parallel, 1 round trip
|
|
105
|
+
const [user, posts, comments] = await Promise.all([
|
|
106
|
+
fetchUser(),
|
|
107
|
+
fetchPosts(),
|
|
108
|
+
fetchComments()
|
|
109
|
+
])
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 3. Dynamic Imports for Heavy Components
|
|
113
|
+
|
|
114
|
+
**Impact: Directly affects TTI and LCP**
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
// ❌ Incorrect: Monaco bundles with main chunk ~300KB
|
|
118
|
+
import { MonacoEditor } from './monaco-editor'
|
|
119
|
+
|
|
120
|
+
// ✅ Correct: Monaco loads on demand
|
|
121
|
+
import dynamic from 'next/dynamic'
|
|
122
|
+
|
|
123
|
+
const MonacoEditor = dynamic(
|
|
124
|
+
() => import('./monaco-editor').then(m => m.MonacoEditor),
|
|
125
|
+
{ ssr: false }
|
|
126
|
+
)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 4. Strategic Suspense Boundaries
|
|
130
|
+
|
|
131
|
+
**Impact: Faster initial paint**
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
// ❌ Incorrect: wrapper blocked by data fetching
|
|
135
|
+
async function Page() {
|
|
136
|
+
const data = await fetchData() // Blocks entire page
|
|
137
|
+
return (
|
|
138
|
+
<div>
|
|
139
|
+
<Sidebar />
|
|
140
|
+
<DataDisplay data={data} />
|
|
141
|
+
</div>
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ✅ Correct: wrapper shows immediately
|
|
146
|
+
function Page() {
|
|
147
|
+
return (
|
|
148
|
+
<div>
|
|
149
|
+
<Sidebar />
|
|
150
|
+
<Suspense fallback={<Skeleton />}>
|
|
151
|
+
<DataDisplay />
|
|
152
|
+
</Suspense>
|
|
153
|
+
</div>
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async function DataDisplay() {
|
|
158
|
+
const data = await fetchData() // Only blocks this component
|
|
159
|
+
return <div>{data.content}</div>
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Reference Navigation
|
|
166
|
+
|
|
167
|
+
| Situation | Read This |
|
|
168
|
+
|-----------|-----------|
|
|
169
|
+
| Bundle too large | `references/bundle-optimization.md` |
|
|
170
|
+
| Slow initial load | `references/eliminating-waterfalls.md` |
|
|
171
|
+
| Server response slow | `references/server-performance.md` |
|
|
172
|
+
| Client data fetching | `references/client-data-fetching.md` |
|
|
173
|
+
| Too many re-renders | `references/rerender-optimization.md` |
|
|
174
|
+
| Rendering performance | `references/rendering-performance.md` |
|
|
175
|
+
| JavaScript hot paths | `references/javascript-performance.md` |
|
|
176
|
+
| Advanced patterns | `references/advanced-patterns.md` |
|
|
177
|
+
| **Complete guide** | `references/complete-guide.md` |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Output Contract
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
## Performance Review
|
|
185
|
+
|
|
186
|
+
### Issues Found
|
|
187
|
+
| Priority | Issue | File:Line | Fix |
|
|
188
|
+
|----------|-------|-----------|-----|
|
|
189
|
+
| CRITICAL | Barrel import | src/App.tsx:5 | Direct import |
|
|
190
|
+
| HIGH | Sequential await | src/api.ts:20 | Promise.all() |
|
|
191
|
+
|
|
192
|
+
### Recommendations
|
|
193
|
+
- [List of specific improvements]
|
|
194
|
+
|
|
195
|
+
### Impact Estimate
|
|
196
|
+
- Bundle size: -X KB
|
|
197
|
+
- Load time: -X ms
|
|
198
|
+
```
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Advanced Patterns
|
|
2
|
+
|
|
3
|
+
**Impact: LOW**
|
|
4
|
+
|
|
5
|
+
Advanced patterns for specific cases that require careful implementation.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Store Event Handlers in Refs
|
|
10
|
+
|
|
11
|
+
**Impact: LOW (stable subscriptions)**
|
|
12
|
+
|
|
13
|
+
Store callbacks in refs when used in effects that shouldn't re-subscribe on callback changes.
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
// ❌ Incorrect: re-subscribes on every render
|
|
17
|
+
function useWindowEvent(event: string, handler: () => void) {
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
window.addEventListener(event, handler)
|
|
20
|
+
return () => window.removeEventListener(event, handler)
|
|
21
|
+
}, [event, handler])
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ✅ Correct: stable subscription
|
|
25
|
+
import { useEffectEvent } from 'react'
|
|
26
|
+
|
|
27
|
+
function useWindowEvent(event: string, handler: () => void) {
|
|
28
|
+
const onEvent = useEffectEvent(handler)
|
|
29
|
+
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
window.addEventListener(event, onEvent)
|
|
32
|
+
return () => window.removeEventListener(event, onEvent)
|
|
33
|
+
}, [event])
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`useEffectEvent` provides a cleaner API: it creates a stable function reference that always calls the latest version of the handler.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. useLatest for Stable Callback Refs
|
|
42
|
+
|
|
43
|
+
**Impact: LOW (prevents effect re-runs)**
|
|
44
|
+
|
|
45
|
+
Access latest values in callbacks without adding them to dependency arrays.
|
|
46
|
+
|
|
47
|
+
**Implementation:**
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
function useLatest<T>(value: T) {
|
|
51
|
+
const ref = useRef(value)
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
ref.current = value
|
|
54
|
+
}, [value])
|
|
55
|
+
return ref
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Usage:**
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
// ❌ Incorrect: effect re-runs on every callback change
|
|
63
|
+
function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
|
|
64
|
+
const [query, setQuery] = useState('')
|
|
65
|
+
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
const timeout = setTimeout(() => onSearch(query), 300)
|
|
68
|
+
return () => clearTimeout(timeout)
|
|
69
|
+
}, [query, onSearch])
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ✅ Correct: stable effect, fresh callback
|
|
73
|
+
function SearchInput({ onSearch }: { onSearch: (q: string) => void }) {
|
|
74
|
+
const [query, setQuery] = useState('')
|
|
75
|
+
const onSearchRef = useLatest(onSearch)
|
|
76
|
+
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
const timeout = setTimeout(() => onSearchRef.current(query), 300)
|
|
79
|
+
return () => clearTimeout(timeout)
|
|
80
|
+
}, [query])
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## References
|
|
87
|
+
|
|
88
|
+
1. https://react.dev
|
|
89
|
+
2. https://nextjs.org
|
|
90
|
+
3. https://swr.vercel.app
|
|
91
|
+
4. https://github.com/shuding/better-all
|
|
92
|
+
5. https://github.com/isaacs/node-lru-cache
|
|
93
|
+
6. https://vercel.com/blog/how-we-optimized-package-imports-in-next-js
|
|
94
|
+
7. https://vercel.com/blog/how-we-made-the-vercel-dashboard-twice-as-fast
|