lsd-pi 1.2.0 → 1.2.2
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/dist/cli.js +7 -1
- package/dist/onboarding.js +3 -3
- package/dist/resources/agents/scout.md +6 -0
- package/dist/resources/extensions/slash-commands/plan.js +7 -1
- package/dist/resources/extensions/subagent/index.js +10 -2
- package/dist/resources/extensions/usage/index.js +87 -36
- package/package.json +1 -1
- package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/agent.js +8 -2
- package/packages/pi-agent-core/dist/agent.js.map +1 -1
- package/packages/pi-agent-core/src/agent.ts +8 -2
- package/packages/pi-ai/dist/models.generated.d.ts +222 -1
- package/packages/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.generated.js +227 -6
- package/packages/pi-ai/dist/models.generated.js.map +1 -1
- package/packages/pi-ai/dist/models.test.js +28 -0
- package/packages/pi-ai/dist/models.test.js.map +1 -1
- package/packages/pi-ai/scripts/generate-models.ts +10 -100
- package/packages/pi-ai/src/models.generated.ts +227 -6
- package/packages/pi-ai/src/models.test.ts +30 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +28 -0
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/system-prompt.js +10 -0
- package/packages/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts +1 -1
- package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/index.js +1 -1
- package/packages/pi-coding-agent/dist/index.js.map +1 -1
- package/packages/pi-coding-agent/dist/tests/path-display.test.js +13 -0
- package/packages/pi-coding-agent/dist/tests/path-display.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.js +15 -0
- package/packages/pi-coding-agent/dist/tests/settings-manager-scout-policy.test.js.map +1 -0
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/agent-session.ts +35 -0
- package/packages/pi-coding-agent/src/core/settings-manager.ts +1 -1
- package/packages/pi-coding-agent/src/core/system-prompt.ts +26 -0
- package/packages/pi-coding-agent/src/index.ts +1 -0
- package/packages/pi-coding-agent/src/tests/path-display.test.ts +14 -0
- package/pkg/package.json +1 -1
- package/src/resources/agents/scout.md +6 -0
- package/src/resources/extensions/slash-commands/plan.ts +11 -1
- package/src/resources/extensions/subagent/index.ts +10 -2
- package/src/resources/extensions/usage/index.ts +92 -38
- package/dist/resources/agents/javascript-pro.md +0 -280
- package/dist/resources/agents/researcher.md +0 -29
- package/dist/resources/agents/teams-builder.md +0 -74
- package/dist/resources/agents/teams-reviewer.md +0 -113
- package/dist/resources/agents/typescript-pro.md +0 -255
- package/dist/resources/skills/accessibility/SKILL.md +0 -522
- package/dist/resources/skills/accessibility/references/WCAG.md +0 -162
- package/dist/resources/skills/core-web-vitals/SKILL.md +0 -441
- package/dist/resources/skills/core-web-vitals/references/LCP.md +0 -208
- package/dist/resources/skills/frontend-design/SKILL.md +0 -45
- package/dist/resources/skills/make-interfaces-feel-better/SKILL.md +0 -122
- package/dist/resources/skills/make-interfaces-feel-better/animations.md +0 -379
- package/dist/resources/skills/make-interfaces-feel-better/performance.md +0 -88
- package/dist/resources/skills/make-interfaces-feel-better/surfaces.md +0 -247
- package/dist/resources/skills/make-interfaces-feel-better/typography.md +0 -123
- package/dist/resources/skills/react-best-practices/README.md +0 -123
- package/dist/resources/skills/react-best-practices/SKILL.md +0 -136
- package/dist/resources/skills/react-best-practices/metadata.json +0 -15
- package/dist/resources/skills/react-best-practices/rules/_sections.md +0 -46
- package/dist/resources/skills/react-best-practices/rules/_template.md +0 -28
- package/dist/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/dist/resources/skills/react-best-practices/rules/advanced-init-once.md +0 -42
- package/dist/resources/skills/react-best-practices/rules/advanced-use-latest.md +0 -39
- package/dist/resources/skills/react-best-practices/rules/async-api-routes.md +0 -38
- package/dist/resources/skills/react-best-practices/rules/async-defer-await.md +0 -80
- package/dist/resources/skills/react-best-practices/rules/async-dependencies.md +0 -51
- package/dist/resources/skills/react-best-practices/rules/async-parallel.md +0 -28
- package/dist/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/dist/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/dist/resources/skills/react-best-practices/rules/bundle-conditional.md +0 -31
- package/dist/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/dist/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/dist/resources/skills/react-best-practices/rules/bundle-preload.md +0 -50
- package/dist/resources/skills/react-best-practices/rules/client-event-listeners.md +0 -74
- package/dist/resources/skills/react-best-practices/rules/client-localstorage-schema.md +0 -71
- package/dist/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +0 -48
- package/dist/resources/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
- package/dist/resources/skills/react-best-practices/rules/js-batch-dom-css.md +0 -107
- package/dist/resources/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
- package/dist/resources/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
- package/dist/resources/skills/react-best-practices/rules/js-cache-storage.md +0 -70
- package/dist/resources/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
- package/dist/resources/skills/react-best-practices/rules/js-early-exit.md +0 -50
- package/dist/resources/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/dist/resources/skills/react-best-practices/rules/js-index-maps.md +0 -37
- package/dist/resources/skills/react-best-practices/rules/js-length-check-first.md +0 -49
- package/dist/resources/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
- package/dist/resources/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/dist/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/dist/resources/skills/react-best-practices/rules/rendering-activity.md +0 -26
- package/dist/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/dist/resources/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/dist/resources/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/dist/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/dist/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/dist/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
- package/dist/resources/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/dist/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +0 -75
- package/dist/resources/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/dist/resources/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
- package/dist/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
- package/dist/resources/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
- package/dist/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/dist/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/dist/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
- package/dist/resources/skills/react-best-practices/rules/rerender-memo.md +0 -44
- package/dist/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
- package/dist/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
- package/dist/resources/skills/react-best-practices/rules/rerender-transitions.md +0 -40
- package/dist/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
- package/dist/resources/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/dist/resources/skills/react-best-practices/rules/server-auth-actions.md +0 -96
- package/dist/resources/skills/react-best-practices/rules/server-cache-lru.md +0 -41
- package/dist/resources/skills/react-best-practices/rules/server-cache-react.md +0 -76
- package/dist/resources/skills/react-best-practices/rules/server-dedup-props.md +0 -65
- package/dist/resources/skills/react-best-practices/rules/server-parallel-fetching.md +0 -83
- package/dist/resources/skills/react-best-practices/rules/server-serialization.md +0 -38
- package/dist/resources/skills/userinterface-wiki/SKILL.md +0 -253
- package/dist/resources/skills/userinterface-wiki/rules/_sections.md +0 -66
- package/dist/resources/skills/userinterface-wiki/rules/_template.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +0 -30
- package/dist/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +0 -30
- package/dist/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +0 -36
- package/dist/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +0 -19
- package/dist/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +0 -18
- package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/container-callback-ref.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +0 -13
- package/dist/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/container-transition-delay.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +0 -35
- package/dist/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +0 -48
- package/dist/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/context-reuse-single.md +0 -30
- package/dist/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +0 -26
- package/dist/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/duration-press-hover.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/duration-small-state.md +0 -15
- package/dist/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +0 -15
- package/dist/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/exit-key-required.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/exit-prop-required.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +0 -34
- package/dist/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +0 -26
- package/dist/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/native-selection-styling.md +0 -18
- package/dist/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +0 -41
- package/dist/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/none-high-frequency.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/param-click-duration.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/param-q-value-range.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/physics-active-state.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +0 -19
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +0 -34
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +0 -13
- package/dist/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +0 -37
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +0 -37
- package/dist/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/staging-dim-background.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/timing-consistent.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +0 -22
- package/dist/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/transition-name-required.md +0 -27
- package/dist/resources/skills/userinterface-wiki/rules/transition-name-unique.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +0 -18
- package/dist/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +0 -15
- package/dist/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +0 -24
- package/dist/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +0 -18
- package/dist/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +0 -15
- package/dist/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +0 -15
- package/dist/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +0 -17
- package/dist/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +0 -21
- package/dist/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +0 -16
- package/dist/resources/skills/userinterface-wiki/rules/type-underline-offset.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +0 -49
- package/dist/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +0 -50
- package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +0 -30
- package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +0 -32
- package/dist/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +0 -45
- package/dist/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +0 -37
- package/dist/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +0 -36
- package/dist/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +0 -35
- package/dist/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +0 -45
- package/dist/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +0 -33
- package/dist/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +0 -41
- package/dist/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +0 -38
- package/dist/resources/skills/userinterface-wiki/rules/ux-serial-position.md +0 -31
- package/dist/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +0 -35
- package/dist/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +0 -28
- package/dist/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +0 -43
- package/dist/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +0 -36
- package/dist/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +0 -49
- package/dist/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +0 -49
- package/dist/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +0 -40
- package/dist/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +0 -35
- package/dist/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +0 -30
- package/dist/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +0 -25
- package/dist/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +0 -23
- package/dist/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +0 -29
- package/dist/resources/skills/userinterface-wiki/rules/weight-match-action.md +0 -32
- package/dist/resources/skills/web-design-guidelines/SKILL.md +0 -39
- package/dist/resources/skills/web-quality-audit/SKILL.md +0 -168
- package/dist/resources/skills/web-quality-audit/scripts/analyze.sh +0 -91
- package/src/resources/agents/javascript-pro.md +0 -280
- package/src/resources/agents/researcher.md +0 -29
- package/src/resources/agents/teams-builder.md +0 -74
- package/src/resources/agents/teams-reviewer.md +0 -113
- package/src/resources/agents/typescript-pro.md +0 -255
- package/src/resources/skills/accessibility/SKILL.md +0 -522
- package/src/resources/skills/accessibility/references/WCAG.md +0 -162
- package/src/resources/skills/core-web-vitals/SKILL.md +0 -441
- package/src/resources/skills/core-web-vitals/references/LCP.md +0 -208
- package/src/resources/skills/frontend-design/SKILL.md +0 -45
- package/src/resources/skills/make-interfaces-feel-better/SKILL.md +0 -122
- package/src/resources/skills/make-interfaces-feel-better/animations.md +0 -379
- package/src/resources/skills/make-interfaces-feel-better/performance.md +0 -88
- package/src/resources/skills/make-interfaces-feel-better/surfaces.md +0 -247
- package/src/resources/skills/make-interfaces-feel-better/typography.md +0 -123
- package/src/resources/skills/react-best-practices/README.md +0 -123
- package/src/resources/skills/react-best-practices/SKILL.md +0 -136
- package/src/resources/skills/react-best-practices/metadata.json +0 -15
- package/src/resources/skills/react-best-practices/rules/_sections.md +0 -46
- package/src/resources/skills/react-best-practices/rules/_template.md +0 -28
- package/src/resources/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/src/resources/skills/react-best-practices/rules/advanced-init-once.md +0 -42
- package/src/resources/skills/react-best-practices/rules/advanced-use-latest.md +0 -39
- package/src/resources/skills/react-best-practices/rules/async-api-routes.md +0 -38
- package/src/resources/skills/react-best-practices/rules/async-defer-await.md +0 -80
- package/src/resources/skills/react-best-practices/rules/async-dependencies.md +0 -51
- package/src/resources/skills/react-best-practices/rules/async-parallel.md +0 -28
- package/src/resources/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/src/resources/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/src/resources/skills/react-best-practices/rules/bundle-conditional.md +0 -31
- package/src/resources/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/src/resources/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/src/resources/skills/react-best-practices/rules/bundle-preload.md +0 -50
- package/src/resources/skills/react-best-practices/rules/client-event-listeners.md +0 -74
- package/src/resources/skills/react-best-practices/rules/client-localstorage-schema.md +0 -71
- package/src/resources/skills/react-best-practices/rules/client-passive-event-listeners.md +0 -48
- package/src/resources/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
- package/src/resources/skills/react-best-practices/rules/js-batch-dom-css.md +0 -107
- package/src/resources/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
- package/src/resources/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
- package/src/resources/skills/react-best-practices/rules/js-cache-storage.md +0 -70
- package/src/resources/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
- package/src/resources/skills/react-best-practices/rules/js-early-exit.md +0 -50
- package/src/resources/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/src/resources/skills/react-best-practices/rules/js-index-maps.md +0 -37
- package/src/resources/skills/react-best-practices/rules/js-length-check-first.md +0 -49
- package/src/resources/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
- package/src/resources/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/src/resources/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/src/resources/skills/react-best-practices/rules/rendering-activity.md +0 -26
- package/src/resources/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/src/resources/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/src/resources/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/src/resources/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/src/resources/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/src/resources/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
- package/src/resources/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/src/resources/skills/react-best-practices/rules/rendering-usetransition-loading.md +0 -75
- package/src/resources/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/src/resources/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
- package/src/resources/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
- package/src/resources/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
- package/src/resources/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/src/resources/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/src/resources/skills/react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
- package/src/resources/skills/react-best-practices/rules/rerender-memo.md +0 -44
- package/src/resources/skills/react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
- package/src/resources/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
- package/src/resources/skills/react-best-practices/rules/rerender-transitions.md +0 -40
- package/src/resources/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
- package/src/resources/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/src/resources/skills/react-best-practices/rules/server-auth-actions.md +0 -96
- package/src/resources/skills/react-best-practices/rules/server-cache-lru.md +0 -41
- package/src/resources/skills/react-best-practices/rules/server-cache-react.md +0 -76
- package/src/resources/skills/react-best-practices/rules/server-dedup-props.md +0 -65
- package/src/resources/skills/react-best-practices/rules/server-parallel-fetching.md +0 -83
- package/src/resources/skills/react-best-practices/rules/server-serialization.md +0 -38
- package/src/resources/skills/userinterface-wiki/SKILL.md +0 -253
- package/src/resources/skills/userinterface-wiki/rules/_sections.md +0 -66
- package/src/resources/skills/userinterface-wiki/rules/_template.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/a11y-reduced-motion-check.md +0 -30
- package/src/resources/skills/userinterface-wiki/rules/a11y-toggle-setting.md +0 -30
- package/src/resources/skills/userinterface-wiki/rules/a11y-visual-equivalent.md +0 -36
- package/src/resources/skills/userinterface-wiki/rules/a11y-volume-control.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/appropriate-confirmations-only.md +0 -19
- package/src/resources/skills/userinterface-wiki/rules/appropriate-errors-warnings.md +0 -18
- package/src/resources/skills/userinterface-wiki/rules/appropriate-no-decorative.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/appropriate-no-high-frequency.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/appropriate-no-punishing.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/container-callback-ref.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/container-guard-initial-zero.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/container-no-excessive-use.md +0 -13
- package/src/resources/skills/userinterface-wiki/rules/container-overflow-hidden.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/container-transition-delay.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/container-two-div-pattern.md +0 -35
- package/src/resources/skills/userinterface-wiki/rules/container-use-resize-observer.md +0 -48
- package/src/resources/skills/userinterface-wiki/rules/context-cleanup-nodes.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/context-resume-suspended.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/context-reuse-single.md +0 -30
- package/src/resources/skills/userinterface-wiki/rules/design-filter-for-character.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/design-noise-for-percussion.md +0 -26
- package/src/resources/skills/userinterface-wiki/rules/design-oscillator-for-tonal.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/duration-max-300ms.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/duration-press-hover.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/duration-shorten-before-curve.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/duration-small-state.md +0 -15
- package/src/resources/skills/userinterface-wiki/rules/easing-entrance-ease-out.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/easing-exit-ease-in.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/easing-for-state-change.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/easing-linear-only-progress.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/easing-natural-decay.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/easing-no-linear-motion.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/easing-transition-ease-in-out.md +0 -15
- package/src/resources/skills/userinterface-wiki/rules/envelope-exponential-decay.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/envelope-no-zero-target.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/envelope-set-initial-value.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/exit-key-required.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/exit-matches-initial.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/exit-prop-required.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/exit-requires-wrapper.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/impl-default-subtle.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/impl-preload-audio.md +0 -34
- package/src/resources/skills/userinterface-wiki/rules/impl-reset-current-time.md +0 -26
- package/src/resources/skills/userinterface-wiki/rules/mode-pop-layout-for-lists.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/mode-sync-layout-conflict.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/mode-wait-doubles-duration.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/morphing-aria-hidden.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/morphing-consistent-viewbox.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/morphing-group-variants.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/morphing-jump-non-grouped.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/morphing-reduced-motion.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/morphing-spring-rotation.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/morphing-strokelinecap-round.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/morphing-three-lines.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/morphing-use-collapsed.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/native-backdrop-styling.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/native-placeholder-styling.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/native-selection-styling.md +0 -18
- package/src/resources/skills/userinterface-wiki/rules/nested-consistent-timing.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/nested-propagate-required.md +0 -41
- package/src/resources/skills/userinterface-wiki/rules/none-context-menu-entrance.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/none-high-frequency.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/none-keyboard-navigation.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/param-click-duration.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/param-filter-frequency-range.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/param-q-value-range.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/param-reasonable-gain.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/physics-active-state.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/physics-no-excessive-stagger.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/physics-spring-for-overshoot.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/physics-subtle-deformation.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/prefetch-hit-slop.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/prefetch-keyboard-tab.md +0 -19
- package/src/resources/skills/userinterface-wiki/rules/prefetch-not-everything.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/prefetch-touch-fallback.md +0 -34
- package/src/resources/skills/userinterface-wiki/rules/prefetch-trajectory-over-hover.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/prefetch-use-selectively.md +0 -13
- package/src/resources/skills/userinterface-wiki/rules/presence-disable-interactions.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/presence-hook-in-child.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/presence-safe-to-remove.md +0 -37
- package/src/resources/skills/userinterface-wiki/rules/pseudo-content-required.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/pseudo-first-line-styling.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/pseudo-hit-target-expansion.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/pseudo-marker-styling.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/pseudo-over-dom-node.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/pseudo-position-relative-parent.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/pseudo-z-index-layering.md +0 -37
- package/src/resources/skills/userinterface-wiki/rules/spring-for-gestures.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/spring-for-interruptible.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/spring-params-balanced.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/spring-preserves-velocity.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/staging-dim-background.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/staging-one-focal-point.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/staging-z-index-hierarchy.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/timing-consistent.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/timing-no-entrance-context-menu.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/timing-under-300ms.md +0 -22
- package/src/resources/skills/userinterface-wiki/rules/transition-name-cleanup.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/transition-name-required.md +0 -27
- package/src/resources/skills/userinterface-wiki/rules/transition-name-unique.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/transition-over-js-library.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/transition-style-pseudo-elements.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/type-antialiased-on-retina.md +0 -18
- package/src/resources/skills/userinterface-wiki/rules/type-disambiguation-stylistic-set.md +0 -15
- package/src/resources/skills/userinterface-wiki/rules/type-font-display-swap.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/type-justify-with-hyphens.md +0 -24
- package/src/resources/skills/userinterface-wiki/rules/type-letter-spacing-uppercase.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/type-no-font-synthesis.md +0 -18
- package/src/resources/skills/userinterface-wiki/rules/type-oldstyle-nums-for-prose.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/type-opentype-contextual-alternates.md +0 -15
- package/src/resources/skills/userinterface-wiki/rules/type-optical-sizing-auto.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/type-proper-fractions.md +0 -15
- package/src/resources/skills/userinterface-wiki/rules/type-slashed-zero.md +0 -17
- package/src/resources/skills/userinterface-wiki/rules/type-tabular-nums-for-data.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-balance-headings.md +0 -21
- package/src/resources/skills/userinterface-wiki/rules/type-text-wrap-pretty.md +0 -16
- package/src/resources/skills/userinterface-wiki/rules/type-underline-offset.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/type-variable-weight-continuous.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/ux-aesthetic-usability.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/ux-cognitive-load-reduce.md +0 -49
- package/src/resources/skills/userinterface-wiki/rules/ux-common-region-boundaries.md +0 -50
- package/src/resources/skills/userinterface-wiki/rules/ux-doherty-perceived-speed.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/ux-doherty-under-400ms.md +0 -30
- package/src/resources/skills/userinterface-wiki/rules/ux-fitts-hit-area.md +0 -32
- package/src/resources/skills/userinterface-wiki/rules/ux-fitts-target-size.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/ux-goal-gradient-progress.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/ux-hicks-minimize-choices.md +0 -45
- package/src/resources/skills/userinterface-wiki/rules/ux-jakobs-familiar-patterns.md +0 -37
- package/src/resources/skills/userinterface-wiki/rules/ux-millers-chunking.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/ux-pareto-prioritize-features.md +0 -36
- package/src/resources/skills/userinterface-wiki/rules/ux-peak-end-finish-strong.md +0 -35
- package/src/resources/skills/userinterface-wiki/rules/ux-postels-accept-messy-input.md +0 -45
- package/src/resources/skills/userinterface-wiki/rules/ux-pragnanz-simplify.md +0 -33
- package/src/resources/skills/userinterface-wiki/rules/ux-progressive-disclosure.md +0 -41
- package/src/resources/skills/userinterface-wiki/rules/ux-proximity-grouping.md +0 -38
- package/src/resources/skills/userinterface-wiki/rules/ux-serial-position.md +0 -31
- package/src/resources/skills/userinterface-wiki/rules/ux-similarity-consistency.md +0 -35
- package/src/resources/skills/userinterface-wiki/rules/ux-teslers-complexity.md +0 -28
- package/src/resources/skills/userinterface-wiki/rules/ux-uniform-connectedness.md +0 -43
- package/src/resources/skills/userinterface-wiki/rules/ux-von-restorff-emphasis.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/ux-zeigarnik-show-incomplete.md +0 -36
- package/src/resources/skills/userinterface-wiki/rules/visual-animate-shadow-pseudo.md +0 -49
- package/src/resources/skills/userinterface-wiki/rules/visual-border-alpha-colors.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/visual-button-shadow-anatomy.md +0 -49
- package/src/resources/skills/userinterface-wiki/rules/visual-concentric-radius.md +0 -40
- package/src/resources/skills/userinterface-wiki/rules/visual-consistent-spacing-scale.md +0 -35
- package/src/resources/skills/userinterface-wiki/rules/visual-layered-shadows.md +0 -30
- package/src/resources/skills/userinterface-wiki/rules/visual-no-pure-black-shadow.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/visual-shadow-direction.md +0 -25
- package/src/resources/skills/userinterface-wiki/rules/visual-shadow-matches-elevation.md +0 -23
- package/src/resources/skills/userinterface-wiki/rules/weight-duration-matches-action.md +0 -29
- package/src/resources/skills/userinterface-wiki/rules/weight-match-action.md +0 -32
- package/src/resources/skills/web-design-guidelines/SKILL.md +0 -39
- package/src/resources/skills/web-quality-audit/SKILL.md +0 -168
- package/src/resources/skills/web-quality-audit/scripts/analyze.sh +0 -91
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Use Semi-Transparent Borders for Subtle Separation
|
|
3
|
-
impact: MEDIUM
|
|
4
|
-
tags: visual, border, alpha, separation
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Use Semi-Transparent Borders for Subtle Separation
|
|
8
|
-
|
|
9
|
-
Semi-transparent borders adapt to any background color and create subtle, non-jarring separation.
|
|
10
|
-
|
|
11
|
-
**Incorrect (hardcoded border color):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.card {
|
|
15
|
-
border: 1px solid #e5e5e5;
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (alpha border):**
|
|
20
|
-
|
|
21
|
-
```css
|
|
22
|
-
.card {
|
|
23
|
-
border: 1px solid var(--gray-a4);
|
|
24
|
-
}
|
|
25
|
-
```
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Use Full Shadow Anatomy on Buttons
|
|
3
|
-
impact: HIGH
|
|
4
|
-
tags: visual, shadow, button, depth, gradient
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Use Full Shadow Anatomy on Buttons
|
|
8
|
-
|
|
9
|
-
A polished button uses six layered techniques, not just a single box-shadow.
|
|
10
|
-
|
|
11
|
-
1. **Outer cut shadow** — 0.5px dark box-shadow to "cut" the button into the surface
|
|
12
|
-
2. **Inner ambient highlight** — 1px inset box-shadow on all sides for environmental light reflections
|
|
13
|
-
3. **Inner top highlight** — 1px inset top highlight for the primary light source from above
|
|
14
|
-
4. **Layered depth shadows** — At least 3 external shadows for natural lighting
|
|
15
|
-
5. **Text drop-shadow** — Drop-shadow on text/icons for better contrast against the button background
|
|
16
|
-
6. **Subtle gradient background** — If you can tell there's a gradient, it's too much
|
|
17
|
-
|
|
18
|
-
**Incorrect (flat button):**
|
|
19
|
-
|
|
20
|
-
```css
|
|
21
|
-
.button {
|
|
22
|
-
background: var(--gray-12);
|
|
23
|
-
color: var(--gray-1);
|
|
24
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**Correct (full shadow anatomy):**
|
|
29
|
-
|
|
30
|
-
```css
|
|
31
|
-
.button {
|
|
32
|
-
background: linear-gradient(
|
|
33
|
-
to bottom,
|
|
34
|
-
color-mix(in srgb, var(--gray-12) 100%, white 4%),
|
|
35
|
-
var(--gray-12)
|
|
36
|
-
);
|
|
37
|
-
color: var(--gray-1);
|
|
38
|
-
box-shadow:
|
|
39
|
-
0 0 0 0.5px rgba(0, 0, 0, 0.3),
|
|
40
|
-
inset 0 0 0 1px rgba(255, 255, 255, 0.04),
|
|
41
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.07),
|
|
42
|
-
0 1px 2px rgba(0, 0, 0, 0.1),
|
|
43
|
-
0 2px 4px rgba(0, 0, 0, 0.06),
|
|
44
|
-
0 4px 8px rgba(0, 0, 0, 0.03);
|
|
45
|
-
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.15);
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Reference: [@PixelJanitor](https://threadreaderapp.com/thread/1623358514440859649)
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Concentric Border Radius for Nested Elements
|
|
3
|
-
impact: HIGH
|
|
4
|
-
tags: visual, border-radius, concentric, nesting
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Concentric Border Radius for Nested Elements
|
|
8
|
-
|
|
9
|
-
When nesting rounded elements, inner radius must equal outer radius minus the gap. Same radius on both creates uneven curves.
|
|
10
|
-
|
|
11
|
-
**Incorrect (same radius on both):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.outer {
|
|
15
|
-
border-radius: 16px;
|
|
16
|
-
padding: 8px;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.inner {
|
|
20
|
-
border-radius: 16px;
|
|
21
|
-
}
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**Correct (concentric radius):**
|
|
25
|
-
|
|
26
|
-
```css
|
|
27
|
-
.outer {
|
|
28
|
-
--padding: 8px;
|
|
29
|
-
--inner-radius: 8px;
|
|
30
|
-
|
|
31
|
-
border-radius: calc(var(--inner-radius) + var(--padding));
|
|
32
|
-
padding: var(--padding);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.inner {
|
|
36
|
-
border-radius: var(--inner-radius);
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Reference: [Concentric Border Radius](https://jakub.kr/work/concentric-border-radius)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Use a Consistent Spacing Scale
|
|
3
|
-
impact: HIGH
|
|
4
|
-
tags: visual, spacing, scale, consistency
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Use a Consistent Spacing Scale
|
|
8
|
-
|
|
9
|
-
Don't use arbitrary pixel values for spacing. Define a scale and stick to it throughout the UI.
|
|
10
|
-
|
|
11
|
-
**Incorrect (arbitrary values):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.header { padding: 17px; }
|
|
15
|
-
.card { margin-bottom: 13px; }
|
|
16
|
-
.section { gap: 22px; }
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (consistent scale):**
|
|
20
|
-
|
|
21
|
-
```css
|
|
22
|
-
:root {
|
|
23
|
-
--space-1: 4px;
|
|
24
|
-
--space-2: 8px;
|
|
25
|
-
--space-3: 12px;
|
|
26
|
-
--space-4: 16px;
|
|
27
|
-
--space-5: 24px;
|
|
28
|
-
--space-6: 32px;
|
|
29
|
-
--space-7: 48px;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.header { padding: var(--space-4); }
|
|
33
|
-
.card { margin-bottom: var(--space-3); }
|
|
34
|
-
.section { gap: var(--space-5); }
|
|
35
|
-
```
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Layer Multiple Shadows for Realistic Depth
|
|
3
|
-
impact: HIGH
|
|
4
|
-
tags: visual, shadow, layered, depth
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Layer Multiple Shadows for Realistic Depth
|
|
8
|
-
|
|
9
|
-
A single box-shadow looks flat. Layer multiple shadows with increasing blur and decreasing opacity to mimic real light.
|
|
10
|
-
|
|
11
|
-
**Incorrect (single flat shadow):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.card {
|
|
15
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (layered shadows):**
|
|
20
|
-
|
|
21
|
-
```css
|
|
22
|
-
.card {
|
|
23
|
-
box-shadow:
|
|
24
|
-
0 1px 2px rgba(0, 0, 0, 0.06),
|
|
25
|
-
0 4px 8px rgba(0, 0, 0, 0.04),
|
|
26
|
-
0 12px 24px rgba(0, 0, 0, 0.03);
|
|
27
|
-
}
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Reference: [Designing Beautiful Shadows in CSS](https://www.joshwcomeau.com/css/designing-shadows/)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Use Neutral Colors for Shadows, Not Pure Black
|
|
3
|
-
impact: MEDIUM
|
|
4
|
-
tags: visual, shadow, color, neutral
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Use Neutral Colors for Shadows, Not Pure Black
|
|
8
|
-
|
|
9
|
-
Pure black shadows look harsh and artificial. Use deep neutrals or semi-transparent dark colors.
|
|
10
|
-
|
|
11
|
-
**Incorrect (pure black):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.card {
|
|
15
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (neutral shadow):**
|
|
20
|
-
|
|
21
|
-
```css
|
|
22
|
-
.card {
|
|
23
|
-
box-shadow: 0 4px 12px rgba(17, 24, 39, 0.08);
|
|
24
|
-
}
|
|
25
|
-
```
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Consistent Shadow Direction Across UI
|
|
3
|
-
impact: HIGH
|
|
4
|
-
tags: visual, shadow, direction, light-source
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Consistent Shadow Direction Across UI
|
|
8
|
-
|
|
9
|
-
All shadows must share the same offset direction to imply a single light source. Mixed directions feel broken.
|
|
10
|
-
|
|
11
|
-
**Incorrect (conflicting light sources):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
.card { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); }
|
|
15
|
-
.modal { box-shadow: 4px 0 8px rgba(0, 0, 0, 0.1); }
|
|
16
|
-
.tooltip { box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.1); }
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (consistent top-down light):**
|
|
20
|
-
|
|
21
|
-
```css
|
|
22
|
-
.card { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); }
|
|
23
|
-
.modal { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); }
|
|
24
|
-
.tooltip { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
|
|
25
|
-
```
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Shadow Size Indicates Elevation
|
|
3
|
-
impact: MEDIUM
|
|
4
|
-
tags: visual, shadow, elevation, hierarchy
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Shadow Size Indicates Elevation
|
|
8
|
-
|
|
9
|
-
Larger blur and offset means higher elevation. Use a consistent shadow scale across your UI.
|
|
10
|
-
|
|
11
|
-
**Correct (elevation scale):**
|
|
12
|
-
|
|
13
|
-
```css
|
|
14
|
-
:root {
|
|
15
|
-
--shadow-1: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
16
|
-
--shadow-2: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
17
|
-
--shadow-3: 0 8px 24px rgba(0, 0, 0, 0.12);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.card { box-shadow: var(--shadow-1); }
|
|
21
|
-
.dropdown { box-shadow: var(--shadow-2); }
|
|
22
|
-
.modal { box-shadow: var(--shadow-3); }
|
|
23
|
-
```
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Sound Duration Matches Action Duration
|
|
3
|
-
impact: MEDIUM
|
|
4
|
-
tags: weight, duration, action
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Sound Duration Matches Action Duration
|
|
8
|
-
|
|
9
|
-
Sound duration should match action duration.
|
|
10
|
-
|
|
11
|
-
**Incorrect (long sound for instant action):**
|
|
12
|
-
|
|
13
|
-
```tsx
|
|
14
|
-
function handleClick() {
|
|
15
|
-
playSound("long-whoosh"); // 2000ms
|
|
16
|
-
}
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**Correct (matched duration):**
|
|
20
|
-
|
|
21
|
-
```tsx
|
|
22
|
-
function handleClick() {
|
|
23
|
-
playSound("click"); // 50ms
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function handleUpload() {
|
|
27
|
-
playSound("upload-progress"); // Matches upload duration
|
|
28
|
-
}
|
|
29
|
-
```
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Match Sound Weight to Action
|
|
3
|
-
impact: MEDIUM
|
|
4
|
-
tags: weight, action, importance
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Match Sound Weight to Action
|
|
8
|
-
|
|
9
|
-
Sound weight should match action importance.
|
|
10
|
-
|
|
11
|
-
**Incorrect (fanfare for toggle):**
|
|
12
|
-
|
|
13
|
-
```tsx
|
|
14
|
-
function handleToggle() {
|
|
15
|
-
playSound("triumphant-fanfare");
|
|
16
|
-
setEnabled(!enabled);
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
**Correct (weight matches action):**
|
|
21
|
-
|
|
22
|
-
```tsx
|
|
23
|
-
function handleToggle() {
|
|
24
|
-
playSound("soft-click");
|
|
25
|
-
setEnabled(!enabled);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function handlePurchase() {
|
|
29
|
-
playSound("success-chime");
|
|
30
|
-
completePurchase();
|
|
31
|
-
}
|
|
32
|
-
```
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: web-design-guidelines
|
|
3
|
-
description: Review UI code for Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
|
|
4
|
-
metadata:
|
|
5
|
-
author: vercel
|
|
6
|
-
version: "1.0.0"
|
|
7
|
-
argument-hint: <file-or-pattern>
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Interface Guidelines
|
|
11
|
-
|
|
12
|
-
Review files for compliance with Interface Guidelines.
|
|
13
|
-
|
|
14
|
-
## How It Works
|
|
15
|
-
|
|
16
|
-
1. Fetch the latest guidelines from the source URL below
|
|
17
|
-
2. Read the specified files (or prompt user for files/pattern)
|
|
18
|
-
3. Check against all rules in the fetched guidelines
|
|
19
|
-
4. Output findings in the terse `file:line` format
|
|
20
|
-
|
|
21
|
-
## Guidelines Source
|
|
22
|
-
|
|
23
|
-
Fetch fresh guidelines before each review:
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
When a user provides a file or pattern argument:
|
|
34
|
-
1. Fetch guidelines from the source URL above
|
|
35
|
-
2. Read the specified files
|
|
36
|
-
3. Apply all rules from the fetched guidelines
|
|
37
|
-
4. Output findings using the format specified in the guidelines
|
|
38
|
-
|
|
39
|
-
If no files specified, ask the user which files to review.
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: web-quality-audit
|
|
3
|
-
description: Comprehensive web quality audit covering performance, accessibility, SEO, and best practices. Use when asked to "audit my site", "review web quality", "run lighthouse audit", "check page quality", or "optimize my website".
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
author: web-quality-skills
|
|
7
|
-
version: "1.0"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Web quality audit
|
|
11
|
-
|
|
12
|
-
Comprehensive quality review based on Google Lighthouse audits. Covers Performance, Accessibility, SEO, and Best Practices across 150+ checks.
|
|
13
|
-
|
|
14
|
-
## How it works
|
|
15
|
-
|
|
16
|
-
1. Analyze the provided code/project for quality issues
|
|
17
|
-
2. Categorize findings by severity (Critical, High, Medium, Low)
|
|
18
|
-
3. Provide specific, actionable recommendations
|
|
19
|
-
4. Include code examples for fixes
|
|
20
|
-
|
|
21
|
-
## Audit categories
|
|
22
|
-
|
|
23
|
-
### Performance (40% of typical issues)
|
|
24
|
-
|
|
25
|
-
**Core Web Vitals** — Must pass for good page experience:
|
|
26
|
-
* **LCP (Largest Contentful Paint) < 2.5s.** The largest visible element must render quickly. Optimize images, fonts, and server response time.
|
|
27
|
-
* **INP (Interaction to Next Paint) < 200ms.** User interactions must feel instant. Reduce JavaScript execution time and break up long tasks.
|
|
28
|
-
* **CLS (Cumulative Layout Shift) < 0.1.** Content must not jump around. Set explicit dimensions on images, embeds, and ads.
|
|
29
|
-
|
|
30
|
-
**Resource Optimization:**
|
|
31
|
-
* **Compress images.** Use WebP/AVIF with fallbacks. Serve correctly sized images via `srcset`.
|
|
32
|
-
* **Minimize JavaScript.** Remove unused code. Use code splitting. Defer non-critical scripts.
|
|
33
|
-
* **Optimize CSS.** Extract critical CSS. Remove unused styles. Avoid `@import`.
|
|
34
|
-
* **Efficient fonts.** Use `font-display: swap`. Preload critical fonts. Subset to needed characters.
|
|
35
|
-
|
|
36
|
-
**Loading Strategy:**
|
|
37
|
-
* **Preconnect to origins.** Add `<link rel="preconnect">` for third-party domains.
|
|
38
|
-
* **Preload critical assets.** LCP images, fonts, and above-fold CSS.
|
|
39
|
-
* **Lazy load below-fold content.** Images, iframes, and heavy components.
|
|
40
|
-
* **Cache effectively.** Long cache TTLs for static assets. Immutable caching for hashed files.
|
|
41
|
-
|
|
42
|
-
### Accessibility (30% of typical issues)
|
|
43
|
-
|
|
44
|
-
**Perceivable:**
|
|
45
|
-
* **Text alternatives.** Every `<img>` has meaningful `alt` text. Decorative images use `alt=""`.
|
|
46
|
-
* **Color contrast.** Minimum 4.5:1 for normal text, 3:1 for large text (WCAG AA).
|
|
47
|
-
* **Don't rely on color alone.** Use icons, patterns, or text alongside color indicators.
|
|
48
|
-
* **Captions and transcripts.** Video has captions. Audio has transcripts.
|
|
49
|
-
|
|
50
|
-
**Operable:**
|
|
51
|
-
* **Keyboard accessible.** All functionality available via keyboard. No keyboard traps.
|
|
52
|
-
* **Focus visible.** Clear focus indicators on all interactive elements.
|
|
53
|
-
* **Skip links.** Provide "Skip to main content" for keyboard users.
|
|
54
|
-
* **Sufficient time.** Users can extend time limits. No auto-advancing content without controls.
|
|
55
|
-
|
|
56
|
-
**Understandable:**
|
|
57
|
-
* **Page language.** Set `lang` attribute on `<html>`.
|
|
58
|
-
* **Consistent navigation.** Same navigation structure across pages.
|
|
59
|
-
* **Error identification.** Form errors clearly described and associated with fields.
|
|
60
|
-
* **Labels and instructions.** All form inputs have associated labels.
|
|
61
|
-
|
|
62
|
-
**Robust:**
|
|
63
|
-
* **Valid HTML.** No duplicate IDs. Properly nested elements.
|
|
64
|
-
* **ARIA used correctly.** Prefer native elements. ARIA roles match behavior.
|
|
65
|
-
* **Name, role, value.** Interactive elements have accessible names and correct roles.
|
|
66
|
-
|
|
67
|
-
### SEO (15% of typical issues)
|
|
68
|
-
|
|
69
|
-
**Crawlability:**
|
|
70
|
-
* **Valid robots.txt.** Doesn't block important resources.
|
|
71
|
-
* **XML sitemap.** Lists all important pages. Submitted to Search Console.
|
|
72
|
-
* **Canonical URLs.** Prevent duplicate content issues.
|
|
73
|
-
* **No noindex on important pages.** Check meta robots and headers.
|
|
74
|
-
|
|
75
|
-
**On-Page SEO:**
|
|
76
|
-
* **Unique title tags.** 50-60 characters. Primary keyword included.
|
|
77
|
-
* **Meta descriptions.** 150-160 characters. Compelling and unique.
|
|
78
|
-
* **Heading hierarchy.** Single `<h1>`. Logical heading structure.
|
|
79
|
-
* **Descriptive link text.** Not "click here" or "read more".
|
|
80
|
-
|
|
81
|
-
**Technical SEO:**
|
|
82
|
-
* **Mobile-friendly.** Responsive design. Tap targets ≥ 48px.
|
|
83
|
-
* **HTTPS.** Secure connection required.
|
|
84
|
-
* **Fast loading.** Performance directly impacts ranking.
|
|
85
|
-
* **Structured data.** JSON-LD for rich snippets (Article, Product, FAQ, etc.).
|
|
86
|
-
|
|
87
|
-
### Best practices (15% of typical issues)
|
|
88
|
-
|
|
89
|
-
**Security:**
|
|
90
|
-
* **HTTPS everywhere.** No mixed content. HSTS enabled.
|
|
91
|
-
* **No vulnerable libraries.** Keep dependencies updated.
|
|
92
|
-
* **CSP headers.** Content Security Policy to prevent XSS.
|
|
93
|
-
* **No exposed source maps.** In production builds.
|
|
94
|
-
|
|
95
|
-
**Modern Standards:**
|
|
96
|
-
* **No deprecated APIs.** Replace `document.write`, synchronous XHR, etc.
|
|
97
|
-
* **Valid doctype.** Use `<!DOCTYPE html>`.
|
|
98
|
-
* **Charset declared.** `<meta charset="UTF-8">` as first element in `<head>`.
|
|
99
|
-
* **No browser errors.** Clean console. No CORS issues.
|
|
100
|
-
|
|
101
|
-
**UX Patterns:**
|
|
102
|
-
* **No intrusive interstitials.** Especially on mobile.
|
|
103
|
-
* **Clear permission requests.** Only ask when needed, with context.
|
|
104
|
-
* **No misleading buttons.** Buttons do what they say.
|
|
105
|
-
|
|
106
|
-
## Severity levels
|
|
107
|
-
|
|
108
|
-
| Level | Description | Action |
|
|
109
|
-
|-------|-------------|--------|
|
|
110
|
-
| **Critical** | Security vulnerabilities, complete failures | Fix immediately |
|
|
111
|
-
| **High** | Core Web Vitals failures, major a11y barriers | Fix before launch |
|
|
112
|
-
| **Medium** | Performance opportunities, SEO improvements | Fix within sprint |
|
|
113
|
-
| **Low** | Minor optimizations, code quality | Fix when convenient |
|
|
114
|
-
|
|
115
|
-
## Audit output format
|
|
116
|
-
|
|
117
|
-
When performing an audit, structure findings as:
|
|
118
|
-
|
|
119
|
-
```markdown
|
|
120
|
-
## Audit results
|
|
121
|
-
|
|
122
|
-
### Critical issues (X found)
|
|
123
|
-
- **[Category]** Issue description. File: `path/to/file.js:123`
|
|
124
|
-
- **Impact:** Why this matters
|
|
125
|
-
- **Fix:** Specific code change or recommendation
|
|
126
|
-
|
|
127
|
-
### High priority (X found)
|
|
128
|
-
...
|
|
129
|
-
|
|
130
|
-
### Summary
|
|
131
|
-
- Performance: X issues (Y critical)
|
|
132
|
-
- Accessibility: X issues (Y critical)
|
|
133
|
-
- SEO: X issues
|
|
134
|
-
- Best Practices: X issues
|
|
135
|
-
|
|
136
|
-
### Recommended priority
|
|
137
|
-
1. First fix this because...
|
|
138
|
-
2. Then address...
|
|
139
|
-
3. Finally optimize...
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Quick checklist
|
|
143
|
-
|
|
144
|
-
### Before every deploy
|
|
145
|
-
- [ ] Core Web Vitals passing
|
|
146
|
-
- [ ] No accessibility errors (axe/Lighthouse)
|
|
147
|
-
- [ ] No console errors
|
|
148
|
-
- [ ] HTTPS working
|
|
149
|
-
- [ ] Meta tags present
|
|
150
|
-
|
|
151
|
-
### Weekly review
|
|
152
|
-
- [ ] Check Search Console for issues
|
|
153
|
-
- [ ] Review Core Web Vitals trends
|
|
154
|
-
- [ ] Update dependencies
|
|
155
|
-
- [ ] Test with screen reader
|
|
156
|
-
|
|
157
|
-
### Monthly deep dive
|
|
158
|
-
- [ ] Full Lighthouse audit
|
|
159
|
-
- [ ] Performance profiling
|
|
160
|
-
- [ ] Accessibility audit with real users
|
|
161
|
-
- [ ] SEO keyword review
|
|
162
|
-
|
|
163
|
-
## References
|
|
164
|
-
|
|
165
|
-
For detailed guidelines on specific areas:
|
|
166
|
-
- [Core Web Vitals](../core-web-vitals/SKILL.md)
|
|
167
|
-
- [Accessibility](../accessibility/SKILL.md)
|
|
168
|
-
- [Best Practices](../best-practices/SKILL.md)
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# Web Quality Audit Script
|
|
5
|
-
# Analyzes HTML files for common quality issues
|
|
6
|
-
|
|
7
|
-
usage() {
|
|
8
|
-
echo "Usage: $0 <file_or_directory>" >&2
|
|
9
|
-
echo "Analyzes HTML files for web quality issues." >&2
|
|
10
|
-
exit 1
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if [ -z "$1" ]; then
|
|
14
|
-
usage
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
TARGET="$1"
|
|
18
|
-
ISSUES=()
|
|
19
|
-
WARNINGS=()
|
|
20
|
-
|
|
21
|
-
analyze_html() {
|
|
22
|
-
local file="$1"
|
|
23
|
-
echo "Analyzing: $file" >&2
|
|
24
|
-
|
|
25
|
-
# Check for doctype
|
|
26
|
-
if ! grep -qi "<!doctype html>" "$file"; then
|
|
27
|
-
ISSUES+=("$file: Missing HTML5 doctype")
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
# Check for charset
|
|
31
|
-
if ! grep -qi 'charset.*utf-8' "$file"; then
|
|
32
|
-
WARNINGS+=("$file: Missing or non-UTF-8 charset declaration")
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
# Check for viewport
|
|
36
|
-
if ! grep -qi 'name="viewport"' "$file"; then
|
|
37
|
-
ISSUES+=("$file: Missing viewport meta tag")
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
# Check for lang attribute
|
|
41
|
-
if ! grep -qi '<html.*lang=' "$file"; then
|
|
42
|
-
ISSUES+=("$file: Missing lang attribute on <html>")
|
|
43
|
-
fi
|
|
44
|
-
|
|
45
|
-
# Check for images without alt
|
|
46
|
-
if grep -qE '<img[^>]*>' "$file" && grep -qE '<img(?![^>]*alt=)[^>]*>' "$file" 2>/dev/null; then
|
|
47
|
-
WARNINGS+=("$file: Possible images without alt text")
|
|
48
|
-
fi
|
|
49
|
-
|
|
50
|
-
# Check for title tag
|
|
51
|
-
if ! grep -qi '<title>' "$file"; then
|
|
52
|
-
ISSUES+=("$file: Missing <title> tag")
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
# Check for HTTPS in links
|
|
56
|
-
if grep -qE 'http://' "$file"; then
|
|
57
|
-
WARNINGS+=("$file: Contains non-HTTPS URLs")
|
|
58
|
-
fi
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
# Process files
|
|
62
|
-
if [ -d "$TARGET" ]; then
|
|
63
|
-
find "$TARGET" -name "*.html" -o -name "*.htm" | while read -r file; do
|
|
64
|
-
analyze_html "$file"
|
|
65
|
-
done
|
|
66
|
-
elif [ -f "$TARGET" ]; then
|
|
67
|
-
analyze_html "$TARGET"
|
|
68
|
-
else
|
|
69
|
-
echo "Error: $TARGET is not a valid file or directory" >&2
|
|
70
|
-
exit 1
|
|
71
|
-
fi
|
|
72
|
-
|
|
73
|
-
# Output results as JSON
|
|
74
|
-
echo '{'
|
|
75
|
-
echo ' "issues": ['
|
|
76
|
-
for i in "${!ISSUES[@]}"; do
|
|
77
|
-
if [ $i -gt 0 ]; then echo ','; fi
|
|
78
|
-
echo -n " \"${ISSUES[$i]}\""
|
|
79
|
-
done
|
|
80
|
-
echo ''
|
|
81
|
-
echo ' ],'
|
|
82
|
-
echo ' "warnings": ['
|
|
83
|
-
for i in "${!WARNINGS[@]}"; do
|
|
84
|
-
if [ $i -gt 0 ]; then echo ','; fi
|
|
85
|
-
echo -n " \"${WARNINGS[$i]}\""
|
|
86
|
-
done
|
|
87
|
-
echo ''
|
|
88
|
-
echo ' ],'
|
|
89
|
-
echo " \"issueCount\": ${#ISSUES[@]},"
|
|
90
|
-
echo " \"warningCount\": ${#WARNINGS[@]}"
|
|
91
|
-
echo '}'
|