@rudinmax87/united-we-stand 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.united-we-stand/README.md +12 -10
- package/.united-we-stand/agents/1-initializer.md +3 -1
- package/.united-we-stand/agents/2-planner.md +4 -0
- package/.united-we-stand/agents/3-designer.md +2 -0
- package/.united-we-stand/agents/4-implementer.md +2 -0
- package/.united-we-stand/agents/5-code-reviewer.md +11 -0
- package/.united-we-stand/agents/accessibility-reviewer.md +4 -1
- package/.united-we-stand/agents/optimizer.md +11 -8
- package/.united-we-stand/agents-md-block.md +2 -1
- package/.united-we-stand/antigravity-workflow.md +1 -1
- package/.united-we-stand/copilot-instructions.md +1 -1
- package/.united-we-stand/cursor-rule.mdc +1 -1
- package/.united-we-stand/framework/00-index.md +4 -0
- package/.united-we-stand/framework/01-core-rules.md +6 -3
- package/.united-we-stand/framework/04-command-routing.md +8 -5
- package/.united-we-stand/framework/06-spec-writing-standard.md +6 -0
- package/.united-we-stand/framework/07-definition-of-done.md +10 -6
- package/.united-we-stand/framework/08-skip-force-policy.md +3 -2
- package/.united-we-stand/framework/10-review-model.md +10 -2
- package/.united-we-stand/framework/12-react-frontend-review-checklist.md +97 -0
- package/.united-we-stand/framework/13-vulnerability-audit-matrix.md +54 -0
- package/.united-we-stand/framework/profiles/csharp.md +2 -0
- package/.united-we-stand/framework/profiles/go.md +2 -1
- package/.united-we-stand/framework/profiles/java.md +2 -1
- package/.united-we-stand/framework/profiles/javascript-typescript.md +8 -5
- package/.united-we-stand/framework/profiles/php.md +2 -0
- package/.united-we-stand/framework/profiles/python.md +2 -1
- package/.united-we-stand/framework/profiles/ruby.md +2 -0
- package/.united-we-stand/framework/profiles/rust.md +2 -1
- package/.united-we-stand/framework/profiles/web-app.md +4 -1
- package/.united-we-stand/spec-driven/branch-template/01-init.md +3 -0
- package/.united-we-stand/spec-driven/branch-template/02-plan.md +3 -0
- package/.united-we-stand/spec-driven/branch-template/03-design.md +4 -1
- package/.united-we-stand/spec-driven/branch-template/05-code-review.md +13 -1
- package/PACKAGE-PUBLISHING.md +403 -0
- package/README.md +7 -5
- package/dist/commands/branch-init.d.ts.map +1 -1
- package/dist/commands/branch-init.js +8 -7
- package/dist/commands/branch-init.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +21 -21
- package/dist/commands/doctor.js.map +1 -1
- package/package.json +2 -1
|
@@ -173,7 +173,7 @@ How chat usage works:
|
|
|
173
173
|
- framework initialization guidance should appear only when you explicitly ask to initialize or explicitly bring up the framework
|
|
174
174
|
- when initialization is requested, the AI should always do a fresh live check of the current git branch before creating branch memory
|
|
175
175
|
- it should not reuse an earlier branch check, earlier status output, or remembered branch context from the same chat as the initialization target
|
|
176
|
-
- if the current branch is the detected default branch,
|
|
176
|
+
- if the current branch is the detected default branch, any framework write that would create or rewrite branch memory should warn and ask for confirmation first; `--force` does not skip that confirmation
|
|
177
177
|
|
|
178
178
|
The workflow is mainly used in chat after installation:
|
|
179
179
|
|
|
@@ -194,11 +194,11 @@ After the workflow is initialized, each stage writes or updates its branch file
|
|
|
194
194
|
| Stage | File name | General description |
|
|
195
195
|
|-------|-----------|---------------------|
|
|
196
196
|
| `0-status-checker` | `00-current-status.md` | Current branch status, blockers, recommended next step, and routing state |
|
|
197
|
-
| `1-initializer` | `01-init.md` | Raw idea, scope, assumptions, open questions,
|
|
198
|
-
| `2-planner` | `02-plan.md` | Ordered plan, dependencies, risks, and suggested execution order |
|
|
199
|
-
| `3-designer` | `03-design.md` | Architecture, interfaces, boundaries, data flow, and design decisions |
|
|
197
|
+
| `1-initializer` | `01-init.md` | Raw idea, scope, assumptions, open questions, success criteria, and early security/dependency concerns |
|
|
198
|
+
| `2-planner` | `02-plan.md` | Ordered plan, dependencies, risks, security/dependency risk handling, and suggested execution order |
|
|
199
|
+
| `3-designer` | `03-design.md` | Architecture, interfaces, boundaries, attack surface, data flow, and design decisions |
|
|
200
200
|
| `4-implementer` | `04-implementation.md` | What changed in code, validation performed, and remaining gaps |
|
|
201
|
-
| `5-code-reviewer` | `05-code-review.md` | Quality, maintainability, security, optimization, and review findings |
|
|
201
|
+
| `5-code-reviewer` | `05-code-review.md` | Quality, maintainability, vulnerability, security, optimization, and review findings |
|
|
202
202
|
| `6-finalizer` | `06-finalization.md` | Final summary, uncaptured changes, doc updates, and closure confirmation |
|
|
203
203
|
|
|
204
204
|
## Runtime Branch Memory
|
|
@@ -244,7 +244,7 @@ The numbered framework stages are:
|
|
|
244
244
|
2. `2-planner`: turn initialized intent into an ordered execution plan with dependencies and risks
|
|
245
245
|
3. `3-designer`: define architecture, interfaces, boundaries, and implementation approach before coding
|
|
246
246
|
4. `4-implementer`: make the code changes and record what changed plus how it was validated
|
|
247
|
-
5. `5-code-reviewer`: review implementation quality,
|
|
247
|
+
5. `5-code-reviewer`: review implementation quality, dependency vulnerabilities, injection/attack risks, test sufficiency, and remaining issues
|
|
248
248
|
6. `6-finalizer`: summarize delivered scope, identify spec/code mismatches or uncaptured changes, ask for explicit user approval, and only then close the workflow with `Current stage = none`
|
|
249
249
|
|
|
250
250
|
### Proper Order
|
|
@@ -288,6 +288,7 @@ Optional framework stages:
|
|
|
288
288
|
- if a request could be interpreted as advancing through two or more phases at once, the AI should explain that united-we-stand only runs one stage at a time, suggest the next recommended numbered stage first, and ask the user to confirm one single stage
|
|
289
289
|
- for branch-scoped work, the AI should stay inside `.spec-driven/<branch-folder>/` by default and update specs first unless you explicitly say otherwise
|
|
290
290
|
- later stage files should be created when those stages are actually started or explicitly amended
|
|
291
|
+
- if branch memory is created directly into a later stage by explicit user confirmation, the AI should create only that one numbered stage file plus `00-current-status.md` and `state.json`
|
|
291
292
|
- `4-implementer` is the first framework stage allowed to change code
|
|
292
293
|
- `6-finalizer` should check for meaningful code/doc changes that were not captured in the specs, ask the user to confirm the final state, and only then close the workflow with `Current stage = none`
|
|
293
294
|
- if a closed branch receives new work later, the workflow should reopen `6-finalizer` and require final approval again
|
|
@@ -333,8 +334,9 @@ The framework is designed to route short natural requests such as `continue`, `f
|
|
|
333
334
|
- If you ask for earlier-stage work while the branch is already in a later stage, the AI should perform that work without moving the workflow backward; instead it should mark downstream state as needing refresh in the status metadata.
|
|
334
335
|
- The most reliable direct NLP bootstrap for initialization is to reference any installed united-we-stand file together with the init request, for example `AGENTS.md initialize this` or `.united-we-stand/README.md init the following`.
|
|
335
336
|
- If branch memory does not exist yet, an explicit request such as `init the following` or `initialize this` should be treated as permission to create the branch spec and start `1-initializer`.
|
|
336
|
-
- If
|
|
337
|
+
- If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, the AI should still warn and ask for confirmation before writing `.spec-driven/...`; `--force` does not skip that confirmation.
|
|
337
338
|
- If branch memory does not exist yet, broader natural phrases such as `let's start this`, `help me with the following idea, i want...`, `i want to build...`, `i want to create...`, or `let's work on...` should also default to `1-initializer` unless you explicitly ask for a later stage.
|
|
339
|
+
- If branch memory does not exist yet and you explicitly confirm starting from a later stage such as planning, the AI should create only that single numbered stage file for the pass. It should not backfill `01-init.md` in the same response.
|
|
338
340
|
- If branch memory does not exist yet and you ask for concrete code changes or other persistent repo work without explicitly asking to initialize the framework, the AI should continue helping with that request normally and should not interrupt to explain framework setup.
|
|
339
341
|
- In that situation it should not create `.spec-driven/...` files unless you explicitly ask to initialize or explicitly bring up the framework.
|
|
340
342
|
|
|
@@ -450,9 +452,9 @@ Standalone agents can be used at any time when the task needs specialized help.
|
|
|
450
452
|
- `project-manager`: summarize scope, blockers, milestones, dependencies, and coordination needs
|
|
451
453
|
- `refactorer`: plan or execute structural improvements while preserving behavior
|
|
452
454
|
- `test-strategist`: design proportionate test strategy and identify critical test coverage gaps
|
|
453
|
-
- `optimizer`: review website optimization, Lighthouse/PageSpeed risks, startup cost, media delivery, caching, and real-user performance bottlenecks
|
|
455
|
+
- `optimizer`: review website optimization, mobile Lighthouse/PageSpeed risks, startup cost, media delivery, caching, render blockers, LCP discovery, and real-user performance bottlenecks
|
|
454
456
|
- `performance-reviewer`: review latency, throughput, memory, and performance hotspots
|
|
455
|
-
- `accessibility-reviewer`: review accessibility concerns for UI work, including semantics and
|
|
457
|
+
- `accessibility-reviewer`: review accessibility concerns for UI work, including semantics, navigation, accessible control names, and contrast
|
|
456
458
|
- `api-contract-writer`: define API request/response boundaries, contracts, and field exposure rules
|
|
457
459
|
- `data-modeler`: design or review schemas, migrations, and data boundaries
|
|
458
460
|
- `sql-database-designer`: design SQL schemas, migration layout, and required database flowcharts, sequence diagrams, entity-relationship models, and relational models
|
|
@@ -476,7 +478,7 @@ Initialize branch memory for the branch you are working on:
|
|
|
476
478
|
united-we-stand branch-init "Describe the change you want to make"
|
|
477
479
|
```
|
|
478
480
|
|
|
479
|
-
If you are on the repository default branch, `branch-init` should warn and ask for confirmation before creating branch memory there. This is meant to reduce long-lived workflow state on `main`/`master`-style branches when a feature branch would be safer.
|
|
481
|
+
If you are on the repository default branch, `branch-init` should warn and ask for confirmation before creating or rewriting branch memory there. This confirmation is still required even when `--force` is used. This is meant to reduce long-lived workflow state on `main`/`master`-style branches when a feature branch would be safer.
|
|
480
482
|
|
|
481
483
|
If you are in detached HEAD, provide the branch name explicitly:
|
|
482
484
|
|
|
@@ -22,12 +22,13 @@ None.
|
|
|
22
22
|
|
|
23
23
|
- Convert user idea into initial branch definition.
|
|
24
24
|
- Capture scope boundaries, assumptions, questions, and success criteria.
|
|
25
|
+
- Capture security-sensitive context early when relevant, including risky dependencies, trust boundaries, sensitive data, and likely attack surface.
|
|
25
26
|
- Capture out-of-scope explicitly to reduce downstream ambiguity.
|
|
26
27
|
- When initialization is requested, always perform a fresh live check of the current git branch before creating or updating branch memory.
|
|
27
28
|
- Do not rely on a previous branch check, previous status output, or remembered branch context from earlier in the same chat.
|
|
28
29
|
- If branch memory does not exist yet and the user explicitly asks to initialize or init the work, create the branch spec for `1-initializer`.
|
|
29
30
|
- If branch memory does not exist yet and the user uses natural bootstrap language such as `let's start this`, `help me with this idea`, `i want to build...`, or `let's work on...`, treat that as initialization intent by default.
|
|
30
|
-
- If the current branch is detected as the repository default branch and
|
|
31
|
+
- If the current branch is detected as the repository default branch and framework memory would be written there, warn about default-branch risks and ask for confirmation before creating or rewriting the branch spec. Force or bypass wording does not skip that confirmation.
|
|
31
32
|
- Do not implement code.
|
|
32
33
|
- If the user asks to modify initializer content, update `01-init.md` in place and keep `Current stage = 1-initializer` unless the user explicitly advances.
|
|
33
34
|
- Do not create or populate planning content just because initializer content now looks complete.
|
|
@@ -42,6 +43,7 @@ None.
|
|
|
42
43
|
- Assumptions
|
|
43
44
|
- Open questions
|
|
44
45
|
- Success criteria
|
|
46
|
+
- Security / dependency concerns
|
|
45
47
|
|
|
46
48
|
## Next-Step Status Rules
|
|
47
49
|
|
|
@@ -24,6 +24,9 @@ Turn initialized intent into an actionable sequence.
|
|
|
24
24
|
- Produce ordered plan, dependencies, and risk visibility.
|
|
25
25
|
- Define suggested execution order and critical blockers.
|
|
26
26
|
- Finish the planning step by reviewing and updating the full task list so it captures all work that still needs to be done.
|
|
27
|
+
- Plan for dependency/package risk reduction and identify when later stages must run vulnerability audits or explicit attack-surface reviews.
|
|
28
|
+
- If branch memory does not exist yet and the user explicitly confirms starting from planning, bootstrap only `00-current-status.md`, `state.json`, and `02-plan.md`.
|
|
29
|
+
- When planning is the first explicit stage on a branch, do not auto-create `01-init.md` or any other numbered stage file in the same pass.
|
|
27
30
|
- Do not implement code.
|
|
28
31
|
- If code/spec drift is observed, apply canonical conflict policy.
|
|
29
32
|
- If the user asks to add or modify planning content, update `02-plan.md` in place.
|
|
@@ -35,6 +38,7 @@ Turn initialized intent into an actionable sequence.
|
|
|
35
38
|
- Objectives
|
|
36
39
|
- Dependencies
|
|
37
40
|
- Risks / unknowns
|
|
41
|
+
- Security / dependency risk plan
|
|
38
42
|
- Suggested execution order
|
|
39
43
|
- Detailed task list
|
|
40
44
|
- Status
|
|
@@ -23,6 +23,7 @@ Define architecture, boundaries, and implementation approach before coding.
|
|
|
23
23
|
|
|
24
24
|
- Document architecture and interface decisions.
|
|
25
25
|
- Define boundaries (security, data exposure, ownership checks) when relevant.
|
|
26
|
+
- Identify attack surface and injection risks when relevant, including XSS, SQL/NoSQL injection, command injection, path traversal, SSRF, CSRF, open redirects, and unsafe deserialization.
|
|
26
27
|
- Define testing boundaries and observability expectations for non-trivial changes.
|
|
27
28
|
- Add diagrams/flows when they reduce ambiguity.
|
|
28
29
|
- For complex integrations (external APIs, databases, third-party services), include explicit sequence/flow diagrams.
|
|
@@ -40,6 +41,7 @@ Define architecture, boundaries, and implementation approach before coding.
|
|
|
40
41
|
- Key components
|
|
41
42
|
- Interfaces / data flow
|
|
42
43
|
- Constraints
|
|
44
|
+
- Security boundaries / attack surface
|
|
43
45
|
- Design decisions
|
|
44
46
|
- Diagrams/flows when useful (Mermaid allowed)
|
|
45
47
|
|
|
@@ -33,6 +33,7 @@ Implement branch changes while preserving traceability and quality.
|
|
|
33
33
|
- Treat `../steering/coding-steering.md` as mandatory for every code change.
|
|
34
34
|
- Follow repository linting, parser-based analysis, and static-analysis rules during implementation instead of treating them as review-only concerns.
|
|
35
35
|
- When repo commands or configured tools exist for linting or parser/static-analysis checks, use them during implementation close and fix straightforward violations in the changed scope before considering the implementation ready for review.
|
|
36
|
+
- When the requested work includes a fix, especially a security or dependency fix, re-verify afterward that the project still builds/compiles when applicable, relevant tests still pass when available, and no intended functionality was removed or changed unintentionally.
|
|
36
37
|
- Add the required file-level/function/block comments from coding steering during implementation instead of leaving them for review cleanup.
|
|
37
38
|
- Do not leave large multi-responsibility functions behind when they can be split into smaller helpers during the implementation step.
|
|
38
39
|
- If code/spec drift exists, reconcile using canonical conflict policy.
|
|
@@ -46,6 +47,7 @@ Implement branch changes while preserving traceability and quality.
|
|
|
46
47
|
- Why it changed
|
|
47
48
|
- Files touched
|
|
48
49
|
- Validation and tests executed
|
|
50
|
+
- Post-fix build/compile/runtime verification performed when applicable
|
|
49
51
|
- Lint/parser/static-analysis checks executed for the changed scope, or an explicit note when such checks were not available
|
|
50
52
|
- Remaining gaps / follow-ups
|
|
51
53
|
|
|
@@ -12,6 +12,8 @@ Review implementation for conformance, quality, security, optimization, and test
|
|
|
12
12
|
|
|
13
13
|
- State updates: `../framework/02-state-model.md`
|
|
14
14
|
- Review model: `../framework/10-review-model.md`
|
|
15
|
+
- React/frontend checklist: `../framework/12-react-frontend-review-checklist.md`
|
|
16
|
+
- Vulnerability audit matrix: `../framework/13-vulnerability-audit-matrix.md`
|
|
15
17
|
- Conflict policy: `../framework/05-conflict-resolution.md`
|
|
16
18
|
- Done criteria: `../framework/07-definition-of-done.md`
|
|
17
19
|
- Profile selection: `../framework/profiles/00-profile-selection.md`
|
|
@@ -24,15 +26,22 @@ Review implementation for conformance, quality, security, optimization, and test
|
|
|
24
26
|
|
|
25
27
|
- By default review quality, security, and optimization dimensions.
|
|
26
28
|
- Treat optimization as the third default check and apply the standalone `optimizer` checklist when the reviewed scope includes a website, frontend, landing page, or user-facing performance path.
|
|
29
|
+
- For React/frontend scope, apply `12-react-frontend-review-checklist.md` as a manual/static-analysis review lens even when no extra tool is installed.
|
|
30
|
+
- For website/frontend scope, include mobile Lighthouse/PageSpeed-style blockers in the default review, especially cache lifetime issues, image delivery issues, render-blocking requests, LCP breakdown/resource discovery issues, network dependency tree problems, unused JS/CSS, unnamed interactive controls, and insufficient contrast.
|
|
31
|
+
- Do not treat a website review as clean when those issues would predictably keep the first production-like mobile Lighthouse/PageSpeed run below a strong score unless the residual risk is explicitly documented.
|
|
27
32
|
- If optimization is not materially applicable, say so explicitly instead of silently skipping it.
|
|
28
33
|
- User may request narrower review scope.
|
|
29
34
|
- Report findings and recommended fixes.
|
|
35
|
+
- Run the proper repo-native vulnerability audit command for the detected stack/package manager whenever a safe no-extra-install command exists, or explicitly state why that audit was unavailable.
|
|
36
|
+
- Report all detected dependency vulnerabilities as high priority in `05-code-review.md`, even when the underlying tool reports a lower severity.
|
|
30
37
|
- Treat coding-steering violations as real findings, not optional style suggestions.
|
|
31
38
|
- Flag missing required comments, large multi-responsibility functions, duplicated logic, unused code, and routine SonarQube-style maintainability issues when they are present in reviewed scope.
|
|
32
39
|
- Run repository linting, parser-based analysis, and static-analysis checks when they are available for the changed stack or package, or explicitly state that they were unavailable or not run.
|
|
40
|
+
- Review code for injection and attack risks when relevant, including XSS, SQL/NoSQL injection, command injection, path traversal, SSRF, CSRF, open redirects, unsafe deserialization, and secret exposure.
|
|
33
41
|
- Surface the relevant lint/parser/static-analysis observations to the user as part of the review output instead of silently relying on them.
|
|
34
42
|
- Do not perform implementation rewrites unless user explicitly requests them.
|
|
35
43
|
- If implementation or design work is requested while review is the current stage, perform the requested earlier-stage work through the appropriate specs/code paths without regressing workflow metadata.
|
|
44
|
+
- If the user asks for fixes from review findings, require post-fix verification of build/compile health, available tests, and functionality preservation before treating the fixes as complete.
|
|
36
45
|
- If the user asks to modify review notes, update `05-code-review.md` in place.
|
|
37
46
|
- Do not create or populate `06-finalization.md` from a review amendment alone.
|
|
38
47
|
- Keep `Current stage = 5-code-reviewer` unless the user explicitly advances, skips, or bypasses.
|
|
@@ -40,11 +49,13 @@ Review implementation for conformance, quality, security, optimization, and test
|
|
|
40
49
|
## Required Output (`05-code-review.md`)
|
|
41
50
|
|
|
42
51
|
- Quality & maintainability findings
|
|
52
|
+
- Vulnerability audit findings
|
|
43
53
|
- Security & boundary findings
|
|
44
54
|
- Optimization findings
|
|
45
55
|
- Severity / priority
|
|
46
56
|
- Recommended fixes
|
|
47
57
|
- Lint/parser/static-analysis observations and whether those checks were run
|
|
58
|
+
- Residual risks
|
|
48
59
|
- Reviewed scope and non-reviewed scope
|
|
49
60
|
|
|
50
61
|
## Next-Step Status Rules
|
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
9
|
-
Review accessibility risks for UI work, including semantics, navigation,
|
|
9
|
+
Review accessibility risks for UI work, including semantics, navigation, assistive-tech impact, and Lighthouse-weighted issues that commonly drag mobile release scores.
|
|
10
10
|
|
|
11
11
|
## Behavior
|
|
12
12
|
|
|
13
13
|
- Read `AGENTS.md`, relevant framework rules, relevant steering, and current branch specs if present.
|
|
14
|
+
- Prioritize Lighthouse-impacting accessibility failures when relevant, especially unnamed interactive controls and insufficient foreground/background contrast.
|
|
15
|
+
- For icon-only buttons or custom controls, verify accessible names explicitly instead of assuming visible icons are sufficient.
|
|
16
|
+
- For text and UI surfaces, verify contrast with mobile readability in mind and flag combinations that are likely to fail WCAG AA or Lighthouse.
|
|
14
17
|
- Do not silently update framework stage files.
|
|
15
18
|
- If the user explicitly asks to persist output, write only the requested files.
|
|
@@ -16,6 +16,9 @@ Review websites and user-facing applications for optimization risks that affect
|
|
|
16
16
|
- When used standalone, do not silently update framework stage files unless the user explicitly asks to persist findings.
|
|
17
17
|
- Prefer concrete findings with the affected route/component/asset, likely user impact, and recommended fix.
|
|
18
18
|
- If a checklist area is not applicable, say so explicitly instead of implying it was checked.
|
|
19
|
+
- For website/frontend scope, treat mobile Lighthouse/PageSpeed on a production-like URL as a first-class release signal, not a nice-to-have after desktop looks good.
|
|
20
|
+
- Do not clear a mobile optimization review while predictable Lighthouse blockers such as cache-lifetime failures, render-blocking resources, late-discovered LCP assets, oversized images, unused JS/CSS, unnamed buttons, or low-contrast UI remain unresolved without an explicit documented reason.
|
|
21
|
+
- If the user wants a launch-ready review, require post-deploy or production-like verification on mobile and explicitly state whether the remaining findings are compatible with a realistic 90+ mobile score target.
|
|
19
22
|
|
|
20
23
|
## Default Optimization Checklist
|
|
21
24
|
|
|
@@ -31,20 +34,20 @@ Review all of the following when relevant:
|
|
|
31
34
|
8. Reduce main-thread work from startup logic, rerenders, heavy parsing, and synchronous DOM work.
|
|
32
35
|
9. Prevent forced reflow and layout thrashing.
|
|
33
36
|
10. Optimize fonts, weights, render-blocking CSS, and loading behavior.
|
|
34
|
-
11. Verify good caching behavior for built assets, images, fonts, media, and CDN/browser headers.
|
|
35
|
-
12. Shorten the network dependency tree and reduce render-blocking chains.
|
|
37
|
+
11. Verify good caching behavior for built assets, images, fonts, media, and CDN/browser headers, and treat missing long-lived cache headers as release blockers when Lighthouse flags them.
|
|
38
|
+
12. Shorten the network dependency tree and reduce render-blocking chains, especially CSS, fonts, and late-discovered hero assets.
|
|
36
39
|
13. Limit third-party impact and measure it separately.
|
|
37
40
|
14. Optimize DOM size and structure.
|
|
38
41
|
15. Avoid rendering offscreen content too early.
|
|
39
42
|
16. Handle mobile differently when lower-power behavior should be simplified.
|
|
40
43
|
17. Preserve layout stability and prevent CLS regressions.
|
|
41
|
-
18. Fix Lighthouse-accessibility issues that overlap with optimization work.
|
|
44
|
+
18. Fix Lighthouse-accessibility issues that overlap with optimization work, especially unnamed buttons/controls and insufficient foreground/background contrast.
|
|
42
45
|
19. Fix SEO and metadata hygiene that affect Lighthouse and sharing quality.
|
|
43
46
|
20. Watch for production-only bundle breakage from chunking, stale assets, or minification-sensitive behavior.
|
|
44
47
|
21. Test optimization work in local, staging, and production-like environments when possible.
|
|
45
|
-
22. Measure with the right tools, not Lighthouse alone.
|
|
46
|
-
23. Verify what the browser is actually downloading in the network panel.
|
|
48
|
+
22. Measure with the right tools, not Lighthouse alone, but always include a mobile Lighthouse/PageSpeed pass when launch-readiness is in scope.
|
|
49
|
+
23. Verify what the browser is actually downloading in the network panel, including LCP resource discovery timing and whether the critical hero asset is fetched early enough.
|
|
47
50
|
24. Re-test after meaningful changes and compare trends rather than trusting one run.
|
|
48
|
-
25. Prioritize fixes in sensible order: runtime errors, eager media, JS startup cost, code splitting, images, decorative effects, main-thread work, caching, render blockers, accessibility, environment verification, then re-test.
|
|
49
|
-
26. Treat an optimized website as one that is fast, interactive, stable, cache-sane, mobile-aware, and free of unnecessary early downloads.
|
|
50
|
-
27. Before calling work done, verify console health, duplicate bootstrap avoidance, media/image behavior, chunking, decorative effects, main-thread work, forced reflow hotspots, fonts, cache headers, accessibility warnings, and post-deploy Lighthouse/PageSpeed checks.
|
|
51
|
+
25. Prioritize fixes in sensible order: runtime errors, eager media, JS startup cost, code splitting, images, decorative effects, main-thread work, caching, render blockers, LCP discovery, accessibility, environment verification, then re-test.
|
|
52
|
+
26. Treat an optimized website as one that is fast, interactive, stable, cache-sane, mobile-aware, accessible enough to avoid score drag, and free of unnecessary early downloads.
|
|
53
|
+
27. Before calling work done, verify console health, duplicate bootstrap avoidance, media/image behavior, chunking, decorative effects, main-thread work, forced reflow hotspots, fonts, cache headers, render-blocking requests, LCP breakdown/discovery, unused JS/CSS, accessibility warnings, and post-deploy mobile Lighthouse/PageSpeed checks.
|
|
@@ -38,7 +38,8 @@ This repository uses **united-we-stand**, a spec-driven AI workflow framework th
|
|
|
38
38
|
- Never reuse an earlier branch check, earlier status output, or remembered branch context from the same chat as the initialization target.
|
|
39
39
|
- If branch memory does not exist yet and the user asks for concrete code changes or other persistent repo work without explicitly asking to initialize, do not interrupt to explain missing framework setup. Help with the request normally instead of inferring a numbered stage.
|
|
40
40
|
- Do not create `.spec-driven/...` files from that request alone. Only surface initialization/framework guidance when the user explicitly asks to initialize or explicitly brings up the framework.
|
|
41
|
-
- If
|
|
41
|
+
- If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, warn about default-branch risks and ask for confirmation before writing `.spec-driven/...` files. Force or bypass wording does not skip that confirmation.
|
|
42
|
+
- If branch memory does not exist yet and the user explicitly confirms starting from a later stage, create only `00-current-status.md`, `state.json`, and the single targeted numbered stage file. Never create two numbered stage files in the same pass.
|
|
42
43
|
- The most reliable direct NLP bootstrap is to reference any installed united-we-stand file together with the init request, for example `AGENTS.md initialize this` or `.united-we-stand/README.md init the following`.
|
|
43
44
|
- Runtime branch memory is writable under `.spec-driven/` only.
|
|
44
45
|
- Treat `.united-we-stand/` as installed framework content (do not use it for runtime branch memory updates).
|
|
@@ -12,6 +12,6 @@ If branch memory does not exist yet and the user asks for concrete code changes
|
|
|
12
12
|
|
|
13
13
|
When initialization is requested, always perform a fresh live check of the current git branch before creating branch memory. Do not rely on a previous branch check, previous status output, or remembered branch context from earlier in the same chat.
|
|
14
14
|
|
|
15
|
-
If
|
|
15
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, warn about default-branch risks and ask for confirmation before writing `.spec-driven/...` files. Force or bypass wording does not skip that confirmation.
|
|
16
16
|
|
|
17
17
|
For the most reliable natural-language initialization when branch memory does not exist yet, reference any installed united-we-stand file together with the init request, for example `AGENTS.md initialize this`.
|
|
@@ -12,6 +12,6 @@ If branch memory does not exist yet and the user asks for concrete code changes
|
|
|
12
12
|
|
|
13
13
|
When initialization is requested, always perform a fresh live check of the current git branch before creating branch memory. Do not rely on a previous branch check, previous status output, or remembered branch context from earlier in the same chat.
|
|
14
14
|
|
|
15
|
-
If
|
|
15
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, warn about default-branch risks and ask for confirmation before writing `.spec-driven/...` files. Force or bypass wording does not skip that confirmation.
|
|
16
16
|
|
|
17
17
|
For the most reliable natural-language initialization when branch memory does not exist yet, reference any installed united-we-stand file together with the init request, for example `AGENTS.md initialize this`.
|
|
@@ -15,6 +15,6 @@ If branch memory does not exist yet and the user asks for concrete code changes
|
|
|
15
15
|
|
|
16
16
|
When initialization is requested, always perform a fresh live check of the current git branch before creating branch memory. Do not rely on a previous branch check, previous status output, or remembered branch context from earlier in the same chat.
|
|
17
17
|
|
|
18
|
-
If
|
|
18
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, warn about default-branch risks and ask for confirmation before writing `.spec-driven/...` files. Force or bypass wording does not skip that confirmation.
|
|
19
19
|
|
|
20
20
|
For the most reliable natural-language initialization when branch memory does not exist yet, reference any installed united-we-stand file together with the init request, for example `AGENTS.md initialize this`.
|
|
@@ -19,6 +19,8 @@ Provide reusable, deterministic rules for spec-driven AI development across repo
|
|
|
19
19
|
9. `09-traceability-model.md`
|
|
20
20
|
10. `10-review-model.md`
|
|
21
21
|
11. `11-glossary.md`
|
|
22
|
+
12. `12-react-frontend-review-checklist.md`
|
|
23
|
+
13. `13-vulnerability-audit-matrix.md`
|
|
22
24
|
|
|
23
25
|
Then read:
|
|
24
26
|
|
|
@@ -41,6 +43,8 @@ Then read:
|
|
|
41
43
|
- Requirement mapping across stages: `09-traceability-model.md`
|
|
42
44
|
- Review dimensions, deep checks, and outputs: `10-review-model.md`
|
|
43
45
|
- Shared definitions: `11-glossary.md`
|
|
46
|
+
- React/frontend static review heuristics: `12-react-frontend-review-checklist.md`
|
|
47
|
+
- Native vulnerability audit command guidance: `13-vulnerability-audit-matrix.md`
|
|
44
48
|
|
|
45
49
|
## Design Goals
|
|
46
50
|
|
|
@@ -91,12 +91,15 @@ This file is the canonical source for global framework invariants.
|
|
|
91
91
|
29. **Post-closure work reopens finalizer**
|
|
92
92
|
If the workflow was explicitly closed and the user later requests more branch changes, reopen `6-finalizer` as the current stage, clear closed/finalized state, and require finalization approval again after the new work is incorporated.
|
|
93
93
|
|
|
94
|
-
30. **Default-branch
|
|
95
|
-
If the current branch is detected as the repository default branch and
|
|
94
|
+
30. **Default-branch framework writes require confirmation**
|
|
95
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there, warn about default-branch risks and ask for confirmation before writing `.spec-driven/...` files. Force or bypass wording never skips that confirmation.
|
|
96
|
+
|
|
97
|
+
31. **Bootstrap only the targeted stage file**
|
|
98
|
+
When branch memory does not exist yet and the user explicitly confirms starting from a later stage, create only `00-current-status.md`, `state.json`, and the single targeted numbered stage file for that pass. Never backfill another numbered stage file in the same pass.
|
|
96
99
|
|
|
97
100
|
## Stage Mandatory Set
|
|
98
101
|
|
|
99
|
-
Mandatory framework stages:
|
|
102
|
+
Mandatory framework stages in the normal forward flow:
|
|
100
103
|
|
|
101
104
|
- `1-initializer`
|
|
102
105
|
- `4-implementer`
|
|
@@ -127,21 +127,23 @@ If the user explicitly asks to initialize or init the work and branch memory doe
|
|
|
127
127
|
|
|
128
128
|
Initialization bootstrap does not grant permission to pre-create or populate planning, design, implementation, review, or finalization files.
|
|
129
129
|
|
|
130
|
-
## Default Branch
|
|
130
|
+
## Default Branch Spec-Creation Rule
|
|
131
131
|
|
|
132
|
-
If
|
|
132
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there:
|
|
133
133
|
|
|
134
|
-
1. warn clearly that
|
|
134
|
+
1. warn clearly that framework memory is about to be written on the default branch
|
|
135
135
|
2. explain that default-branch framework memory can make later feature-branch flow, branch-specific specs, and long-lived workflow state harder to manage
|
|
136
136
|
3. ask for explicit confirmation before creating `.spec-driven/<branch>/`
|
|
137
|
-
4. if the user confirms, continue with
|
|
138
|
-
5.
|
|
137
|
+
4. if the user confirms, continue with the single requested framework stage bootstrap
|
|
138
|
+
5. force or bypass wording does not skip this confirmation on the default branch
|
|
139
139
|
|
|
140
140
|
Examples:
|
|
141
141
|
|
|
142
142
|
- `initialize this on main`
|
|
143
143
|
- `branch-init this work on master`
|
|
144
144
|
- `init this branch` while currently on the detected default branch
|
|
145
|
+
- `start planning on main`
|
|
146
|
+
- `create the review spec on master`
|
|
145
147
|
|
|
146
148
|
Examples:
|
|
147
149
|
|
|
@@ -170,6 +172,7 @@ If branch memory does not exist yet and the user requests concrete code changes
|
|
|
170
172
|
4. do not create `.spec-driven/...` files or numbered stage files unless the user explicitly asks to initialize or explicitly mentions the framework
|
|
171
173
|
5. if the user explicitly asks to initialize instead, create branch memory and start `1-initializer`
|
|
172
174
|
6. if the user explicitly asks to start the framework from a later stage or uses force/bypass semantics, require confirmation of one exact target stage before proceeding
|
|
175
|
+
7. once that exact later-stage start is confirmed, create only `00-current-status.md`, `state.json`, and the single requested stage file; do not backfill `01-init.md` or any other numbered stage file in the same pass
|
|
173
176
|
|
|
174
177
|
This silent fallback applies on the default branch too. Do not interrupt ordinary work on `main`/default branches just to explain framework setup.
|
|
175
178
|
|
|
@@ -53,12 +53,14 @@ Required fields:
|
|
|
53
53
|
- Assumptions
|
|
54
54
|
- Open questions
|
|
55
55
|
- Success criteria
|
|
56
|
+
- Security / dependency concerns
|
|
56
57
|
|
|
57
58
|
### `02-plan.md`
|
|
58
59
|
|
|
59
60
|
- Objectives
|
|
60
61
|
- Dependencies
|
|
61
62
|
- Risks / unknowns
|
|
63
|
+
- Security / dependency risk plan
|
|
62
64
|
- Suggested execution order
|
|
63
65
|
- Detailed task list
|
|
64
66
|
- Status
|
|
@@ -69,6 +71,7 @@ Required fields:
|
|
|
69
71
|
- Key components
|
|
70
72
|
- Interfaces / data flow
|
|
71
73
|
- Constraints
|
|
74
|
+
- Security boundaries / attack surface
|
|
72
75
|
- Design decisions
|
|
73
76
|
- Diagrams/flows when useful (Mermaid allowed)
|
|
74
77
|
|
|
@@ -83,10 +86,13 @@ Required fields:
|
|
|
83
86
|
### `05-code-review.md`
|
|
84
87
|
|
|
85
88
|
- Quality & maintainability findings
|
|
89
|
+
- Vulnerability audit findings
|
|
86
90
|
- Security / boundary findings
|
|
87
91
|
- Optimization findings
|
|
88
92
|
- Severity / priority
|
|
89
93
|
- Recommended fixes
|
|
94
|
+
- Lint/parser/static-analysis observations
|
|
95
|
+
- Residual risks
|
|
90
96
|
- Reviewed scope and non-reviewed scope
|
|
91
97
|
|
|
92
98
|
### `06-finalization.md`
|
|
@@ -15,11 +15,11 @@ A stage is done when all are true:
|
|
|
15
15
|
|
|
16
16
|
## Role-Specific Completion Expectations
|
|
17
17
|
|
|
18
|
-
- **Initializer**: goal, scope, assumptions, open questions,
|
|
19
|
-
- **Planner**: objectives, tasks, dependencies, and
|
|
20
|
-
- **Designer**: architecture, boundaries, and implementation guidance are clear.
|
|
21
|
-
- **Implementer**: changes, rationale, tests, and validation are recorded.
|
|
22
|
-
- **Code Reviewer**: quality, security, and optimization findings, severity, scope, and recommendations are explicit.
|
|
18
|
+
- **Initializer**: goal, scope, assumptions, open questions, success criteria, and relevant security/dependency concerns are captured.
|
|
19
|
+
- **Planner**: objectives, tasks, dependencies, risks, and security/dependency risk handling are actionable.
|
|
20
|
+
- **Designer**: architecture, boundaries, attack surface, and implementation guidance are clear.
|
|
21
|
+
- **Implementer**: changes, rationale, tests, and validation are recorded, including post-fix verification when relevant.
|
|
22
|
+
- **Code Reviewer**: quality, vulnerability, security, and optimization findings, severity, scope, and recommendations are explicit.
|
|
23
23
|
- **Finalizer**: delivered scope, known gaps, uncaptured spec/code differences, doc impact, and user closure confirmation status are clear; the workflow is only closed after explicit user confirmation.
|
|
24
24
|
|
|
25
25
|
## Implementation and Review Quality Gates
|
|
@@ -33,8 +33,12 @@ These gates must be applied through profile + review-model rules:
|
|
|
33
33
|
- error handling and logging are intentional
|
|
34
34
|
- tests are proportionate and meaningful
|
|
35
35
|
- security boundaries are reviewed
|
|
36
|
-
- dependency
|
|
36
|
+
- earlier stages identify dependency risk and attack surface when relevant
|
|
37
|
+
- dependency/security checks are run according to the selected stack/package manager when a safe no-extra-install command exists, or the gap is explicitly disclosed
|
|
38
|
+
- all detected dependency vulnerabilities are surfaced as high priority review findings
|
|
39
|
+
- fix requests are not done until post-fix verification was attempted for build/compile health, available tests, and functionality preservation
|
|
37
40
|
- available lint/parser/static-analysis checks relevant to the changed scope were run, or their absence/non-execution is explicitly disclosed
|
|
41
|
+
- for website/frontend changes, predictable mobile Lighthouse/PageSpeed blockers such as cache lifetime failures, render-blocking requests, late-discovered LCP assets, oversized images, unused JS/CSS, unnamed controls, and low-contrast UI are either fixed or explicitly documented before review is treated as clean
|
|
38
42
|
|
|
39
43
|
Profile-specific mandates (for example JS/TS style, audit commands, JSDoc practices) must be enforced via selected profile docs.
|
|
40
44
|
|
|
@@ -28,11 +28,11 @@ If branch memory does not exist yet, direct repo work without explicit initializ
|
|
|
28
28
|
|
|
29
29
|
## Default Branch Initialization Warning
|
|
30
30
|
|
|
31
|
-
If the current branch is detected as the repository default branch and the
|
|
31
|
+
If the current branch is detected as the repository default branch and the framework would create or rewrite branch memory there:
|
|
32
32
|
|
|
33
33
|
- warn about the risks of anchoring branch-specific workflow state on the default branch
|
|
34
34
|
- ask for explicit confirmation before creating `.spec-driven/...` files
|
|
35
|
-
-
|
|
35
|
+
- never skip that confirmation because of `--force` or equivalent force/bypass wording
|
|
36
36
|
|
|
37
37
|
## Mandatory Stage Warning
|
|
38
38
|
|
|
@@ -40,6 +40,7 @@ If user bypasses a mandatory stage (`1-initializer` or `4-implementer`):
|
|
|
40
40
|
|
|
41
41
|
- warn clearly about risk and missing guarantees
|
|
42
42
|
- proceed only if user confirms bypass intent
|
|
43
|
+
- create only the single explicitly targeted stage file for that pass; do not backfill the bypassed stage file in the same pass
|
|
43
44
|
|
|
44
45
|
## Traceability Requirement
|
|
45
46
|
|
|
@@ -37,8 +37,11 @@ User may explicitly narrow scope.
|
|
|
37
37
|
- oversized or multi-responsibility functions
|
|
38
38
|
- routine SonarQube-style maintainability findings that should have been prevented during implementation
|
|
39
39
|
- lint, parser-based analysis, and static-analysis findings relevant to the changed scope
|
|
40
|
+
- React/frontend static-review checklist findings when that stack is in scope
|
|
40
41
|
3. **Security**
|
|
42
|
+
- dependency vulnerability audit findings from safe repo-native/package-manager-native commands when available
|
|
41
43
|
- input validation/injection boundaries
|
|
44
|
+
- XSS, SQL/NoSQL injection, command injection, path traversal, SSRF, CSRF, open redirects, unsafe deserialization, and secret exposure when relevant
|
|
42
45
|
- authn/authz ownership checks (BOLA/IDOR)
|
|
43
46
|
- data exposure minimization
|
|
44
47
|
- dependency/supply-chain considerations
|
|
@@ -47,8 +50,9 @@ User may explicitly narrow scope.
|
|
|
47
50
|
- duplicated initialization, unnecessary listeners, and repeated bootstrap work
|
|
48
51
|
- media, image, font, and third-party delivery cost
|
|
49
52
|
- main-thread work, forced reflow, DOM size, and offscreen rendering cost
|
|
50
|
-
- mobile behavior, layout stability, caching, and production-only bundle risks
|
|
51
|
-
-
|
|
53
|
+
- mobile behavior, layout stability, caching, render-blocking requests, LCP breakdown/resource discovery, network dependency chains, and production-only bundle risks
|
|
54
|
+
- unused JS/CSS and late-discovered critical resources
|
|
55
|
+
- Lighthouse-scored accessibility issues that materially affect launch-readiness, especially unnamed interactive controls and insufficient contrast
|
|
52
56
|
5. **Testing**
|
|
53
57
|
- tests exist and cover high-risk paths proportionately
|
|
54
58
|
6. **Documentation**
|
|
@@ -61,7 +65,9 @@ Review output should state:
|
|
|
61
65
|
- what was reviewed
|
|
62
66
|
- what was not reviewed
|
|
63
67
|
- findings
|
|
68
|
+
- vulnerability audit findings or an explicit unavailable/not-run note
|
|
64
69
|
- optimization findings or an explicit not-applicable note
|
|
70
|
+
- for website/frontend scope, an explicit note on whether the remaining findings are compatible with a realistic strong mobile Lighthouse/PageSpeed outcome
|
|
65
71
|
- severity/priority
|
|
66
72
|
- recommended fixes
|
|
67
73
|
- lint/parser/static-analysis observations and whether those checks were run
|
|
@@ -70,6 +76,8 @@ Review output should state:
|
|
|
70
76
|
## Reviewer Behavior Constraints
|
|
71
77
|
|
|
72
78
|
- report discrepancies by default
|
|
79
|
+
- run safe repo-native vulnerability audit commands when available for the selected stack/package manager, or explicitly disclose that no no-install command was available
|
|
80
|
+
- report detected dependency vulnerabilities as high priority findings in review output
|
|
73
81
|
- treat mandatory coding-steering violations as review findings that block a clean review
|
|
74
82
|
- use available lint/parser/static-analysis results as first-class review evidence instead of optional background context
|
|
75
83
|
- do not rewrite lower stages unless user explicitly requests it
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# React / Frontend Review Checklist
|
|
2
|
+
|
|
3
|
+
Use this document as a framework-native checklist for React, Next.js, Vite, Remix, Gatsby, Expo web, and similar frontend reviews when no extra dependency is installed.
|
|
4
|
+
|
|
5
|
+
This is a review lens, not a bundled parser or external tool requirement.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
Apply when the reviewed code materially includes:
|
|
10
|
+
|
|
11
|
+
- React components or hooks
|
|
12
|
+
- frontend routing/layout code
|
|
13
|
+
- client rendering and hydration
|
|
14
|
+
- bundle-size or delivery concerns
|
|
15
|
+
- Next.js/App Router or similar framework code
|
|
16
|
+
|
|
17
|
+
## State And Effects
|
|
18
|
+
|
|
19
|
+
Check for:
|
|
20
|
+
|
|
21
|
+
- derived state computed in `useEffect` instead of during render
|
|
22
|
+
- `fetch()` in effects where a server/data-layer approach is more appropriate
|
|
23
|
+
- too many `setState` calls in one effect
|
|
24
|
+
- effects being used like event handlers
|
|
25
|
+
- `useState` initialized from props and then expected to stay in sync
|
|
26
|
+
- related local state that should likely be modeled with `useReducer`
|
|
27
|
+
- stale-closure `setState(value + 1)` patterns
|
|
28
|
+
- object/array literals in hook dependency arrays
|
|
29
|
+
|
|
30
|
+
## Rendering And Performance
|
|
31
|
+
|
|
32
|
+
Check for:
|
|
33
|
+
|
|
34
|
+
- unnecessary `useMemo`/memoization for trivially cheap expressions
|
|
35
|
+
- inline object/array/function props that defeat memoized child components
|
|
36
|
+
- hydration flicker from mount-only `useEffect` state resets
|
|
37
|
+
- sequential async work that should use `Promise.all()`
|
|
38
|
+
- repeated expensive work during render
|
|
39
|
+
- unnecessary rerenders from unstable references
|
|
40
|
+
|
|
41
|
+
## Animation And Motion
|
|
42
|
+
|
|
43
|
+
Check for:
|
|
44
|
+
|
|
45
|
+
- `transition: all`
|
|
46
|
+
- layout-property animation instead of transform/opacity
|
|
47
|
+
- permanent `will-change`
|
|
48
|
+
- large animated blur effects
|
|
49
|
+
- `scale(0)` entrance animations
|
|
50
|
+
- lack of reduced-motion handling when motion libraries are used
|
|
51
|
+
- hover-only behavior on touch devices
|
|
52
|
+
|
|
53
|
+
## Bundle Size And Delivery
|
|
54
|
+
|
|
55
|
+
Check for:
|
|
56
|
+
|
|
57
|
+
- barrel imports that weaken tree-shaking
|
|
58
|
+
- full-library imports such as `lodash` instead of path imports
|
|
59
|
+
- heavy date/moment-style libraries without justification
|
|
60
|
+
- heavy client libraries that should be lazy/dynamically loaded
|
|
61
|
+
- synchronous third-party scripts
|
|
62
|
+
- full `framer-motion` usage where a lighter pattern would work
|
|
63
|
+
- dead code, unused files, unused exports, unused types, and duplicate exports
|
|
64
|
+
|
|
65
|
+
## Next.js And Route Delivery
|
|
66
|
+
|
|
67
|
+
Check for:
|
|
68
|
+
|
|
69
|
+
- `<img>` instead of `next/image`
|
|
70
|
+
- missing `sizes` for responsive `next/image`
|
|
71
|
+
- native `<script>` instead of `next/script`
|
|
72
|
+
- inline `Script` without a stable `id`
|
|
73
|
+
- Google Fonts `<link>` usage instead of `next/font`
|
|
74
|
+
- stylesheet `<link>` usage that bypasses bundling
|
|
75
|
+
- polyfill CDN scripts that duplicate framework behavior
|
|
76
|
+
- missing page metadata
|
|
77
|
+
- client-side redirects in effects when framework-native redirect handling should be used
|
|
78
|
+
- `useSearchParams` without the required suspense boundary
|
|
79
|
+
- GET handlers with side effects or mutating route semantics
|
|
80
|
+
|
|
81
|
+
## Security Crossover
|
|
82
|
+
|
|
83
|
+
Check for:
|
|
84
|
+
|
|
85
|
+
- hardcoded client-side secrets
|
|
86
|
+
- unsafe redirects
|
|
87
|
+
- GET handlers that mutate state
|
|
88
|
+
- direct use of `eval`, `new Function`, or string-based timers
|
|
89
|
+
- user-controlled content flowing into unsafe rendering or execution sinks
|
|
90
|
+
|
|
91
|
+
## Review Output Guidance
|
|
92
|
+
|
|
93
|
+
When these checks produce findings:
|
|
94
|
+
|
|
95
|
+
- surface them under quality, security, or optimization as appropriate
|
|
96
|
+
- treat them as first-class review evidence, not optional polish
|
|
97
|
+
- keep manual findings explicit about affected files/components and likely user impact
|