lsd-pi 1.1.10 → 1.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/dist/onboarding.js +3 -3
- package/dist/resources/agents/scout.md +6 -0
- package/dist/resources/extensions/slash-commands/index.js +2 -0
- package/dist/resources/extensions/slash-commands/init.js +47 -0
- package/dist/resources/extensions/slash-commands/plan.js +238 -51
- package/dist/resources/extensions/slash-commands/tools.js +14 -27
- package/dist/resources/extensions/subagent/index.js +14 -11
- package/dist/resources/extensions/usage/index.js +87 -36
- package/package.json +1 -1
- 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 +39 -5
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader-lsd-md.test.js +59 -7
- package/packages/pi-coding-agent/dist/core/resource-loader-lsd-md.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/resource-loader.js +4 -4
- package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.js +18 -7
- package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/sdk.test.js +80 -0
- package/packages/pi-coding-agent/dist/core/sdk.test.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +12 -5
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +23 -9
- 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/modes/interactive/components/settings-selector.d.ts +8 -4
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +32 -5
- package/packages/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +8 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +34 -25
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.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 +48 -5
- package/packages/pi-coding-agent/src/core/resource-loader-lsd-md.test.ts +67 -7
- package/packages/pi-coding-agent/src/core/resource-loader.ts +4 -4
- package/packages/pi-coding-agent/src/core/sdk.test.ts +100 -0
- package/packages/pi-coding-agent/src/core/sdk.ts +23 -8
- package/packages/pi-coding-agent/src/core/settings-manager.ts +36 -15
- package/packages/pi-coding-agent/src/core/system-prompt.ts +26 -0
- package/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +41 -10
- package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +11 -0
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +43 -27
- 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/index.ts +2 -0
- package/src/resources/extensions/slash-commands/init.ts +55 -0
- package/src/resources/extensions/slash-commands/plan.ts +279 -53
- package/src/resources/extensions/slash-commands/tools.ts +15 -29
- package/src/resources/extensions/subagent/index.ts +14 -11
- 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
|
@@ -6,11 +6,6 @@ function getSettingsManager() {
|
|
|
6
6
|
function isHashlineMode(activeToolNames) {
|
|
7
7
|
return activeToolNames.includes("hashline_read") || activeToolNames.includes("hashline_edit");
|
|
8
8
|
}
|
|
9
|
-
function getCoreToolNames(activeToolNames) {
|
|
10
|
-
return isHashlineMode(activeToolNames)
|
|
11
|
-
? ["hashline_read", "bash", "lsp", "tool_search", "tool_enable"]
|
|
12
|
-
: ["read", "bash", "lsp", "tool_search", "tool_enable"];
|
|
13
|
-
}
|
|
14
9
|
function getBalancedToolNames(activeToolNames) {
|
|
15
10
|
return isHashlineMode(activeToolNames)
|
|
16
11
|
? [
|
|
@@ -25,6 +20,7 @@ function getBalancedToolNames(activeToolNames) {
|
|
|
25
20
|
"Skill",
|
|
26
21
|
"subagent",
|
|
27
22
|
"await_subagent",
|
|
23
|
+
"ask_user_questions",
|
|
28
24
|
]
|
|
29
25
|
: [
|
|
30
26
|
"read",
|
|
@@ -38,8 +34,12 @@ function getBalancedToolNames(activeToolNames) {
|
|
|
38
34
|
"Skill",
|
|
39
35
|
"subagent",
|
|
40
36
|
"await_subagent",
|
|
37
|
+
"ask_user_questions",
|
|
41
38
|
];
|
|
42
39
|
}
|
|
40
|
+
function getFullToolNames(pi) {
|
|
41
|
+
return pi.getAllTools().map((tool) => tool.name).filter((name) => Boolean(name));
|
|
42
|
+
}
|
|
43
43
|
function scoreTool(query, tool) {
|
|
44
44
|
const name = (tool.name ?? "").toLowerCase();
|
|
45
45
|
const description = (tool.description ?? "").toLowerCase();
|
|
@@ -153,43 +153,30 @@ export default function toolSearchExtension(pi) {
|
|
|
153
153
|
},
|
|
154
154
|
});
|
|
155
155
|
pi.registerCommand("tools", {
|
|
156
|
-
description: "
|
|
156
|
+
description: "Manage default tool profiles",
|
|
157
157
|
handler: async (args, _ctx) => {
|
|
158
158
|
const input = args.trim();
|
|
159
159
|
const settings = getSettingsManager();
|
|
160
160
|
const currentActive = pi.getActiveTools();
|
|
161
161
|
const toolProfile = settings.getToolProfile();
|
|
162
|
-
const toolSearchEnabled = toolProfile === "minimal";
|
|
163
162
|
if (!input) {
|
|
164
163
|
pi.sendMessage({
|
|
165
164
|
customType: "tools:status",
|
|
166
165
|
content: [
|
|
167
166
|
`Tool profile: ${toolProfile}`,
|
|
168
|
-
`Tool search mode: ${toolSearchEnabled ? "on" : "off"}`,
|
|
169
167
|
`Active tools: ${currentActive.length}`,
|
|
170
168
|
currentActive.length > 0 ? currentActive.join(", ") : "(none)",
|
|
171
169
|
"",
|
|
172
170
|
"Usage:",
|
|
173
|
-
" /tools on Enable lazy tool-search mode and switch to a small core tool set",
|
|
174
|
-
" /tools off Disable lazy tool-search mode and restore the balanced tool profile",
|
|
175
171
|
" /tools balanced Switch to the balanced tool profile",
|
|
176
|
-
" /tools
|
|
172
|
+
" /tools full Switch to the full tool profile (all available tools)",
|
|
173
|
+
" /tools on Alias for /tools full",
|
|
174
|
+
" /tools off Alias for /tools balanced",
|
|
177
175
|
].join("\n"),
|
|
178
176
|
display: true,
|
|
179
177
|
});
|
|
180
178
|
return;
|
|
181
179
|
}
|
|
182
|
-
if (["on", "enable", "mode on"].includes(input)) {
|
|
183
|
-
settings.setToolProfile("minimal");
|
|
184
|
-
const nextActive = getCoreToolNames(currentActive);
|
|
185
|
-
pi.setActiveTools(nextActive);
|
|
186
|
-
pi.sendMessage({
|
|
187
|
-
customType: "tools:mode",
|
|
188
|
-
content: `Tool search mode enabled. Active tools reduced to: ${pi.getActiveTools().join(", ")}`,
|
|
189
|
-
display: true,
|
|
190
|
-
});
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
180
|
if (["off", "disable", "mode off", "balanced", "default"].includes(input)) {
|
|
194
181
|
settings.setToolProfile("balanced");
|
|
195
182
|
const nextActive = getBalancedToolNames(currentActive);
|
|
@@ -201,20 +188,20 @@ export default function toolSearchExtension(pi) {
|
|
|
201
188
|
});
|
|
202
189
|
return;
|
|
203
190
|
}
|
|
204
|
-
if (["
|
|
205
|
-
settings.setToolProfile("
|
|
206
|
-
const nextActive =
|
|
191
|
+
if (["on", "enable", "mode on", "full", "all"].includes(input)) {
|
|
192
|
+
settings.setToolProfile("full");
|
|
193
|
+
const nextActive = getFullToolNames(pi);
|
|
207
194
|
pi.setActiveTools(nextActive);
|
|
208
195
|
pi.sendMessage({
|
|
209
196
|
customType: "tools:mode",
|
|
210
|
-
content: `
|
|
197
|
+
content: `Full tool profile active: ${pi.getActiveTools().join(", ")}`,
|
|
211
198
|
display: true,
|
|
212
199
|
});
|
|
213
200
|
return;
|
|
214
201
|
}
|
|
215
202
|
pi.sendMessage({
|
|
216
203
|
customType: "tools:help",
|
|
217
|
-
content: `Unknown /tools subcommand: ${input}\n\nTry /tools, /tools
|
|
204
|
+
content: `Unknown /tools subcommand: ${input}\n\nTry /tools, /tools balanced, /tools full, /tools on, or /tools off.`,
|
|
218
205
|
display: true,
|
|
219
206
|
});
|
|
220
207
|
},
|
|
@@ -579,7 +579,7 @@ const ChainItem = Type.Object({
|
|
|
579
579
|
})),
|
|
580
580
|
});
|
|
581
581
|
const AgentScopeSchema = StringEnum(["user", "project", "both"], {
|
|
582
|
-
description: 'Which agent directories to use. Default: "both"
|
|
582
|
+
description: 'Which agent directories to use. Default: "both".',
|
|
583
583
|
default: "both",
|
|
584
584
|
});
|
|
585
585
|
const SubagentParams = Type.Object({
|
|
@@ -786,15 +786,21 @@ export default function (pi) {
|
|
|
786
786
|
"Modes: single ({ agent, task }), parallel ({ tasks: [{agent, task},...] }), chain ({ chain: [{agent, task},...] } with {previous} placeholder).",
|
|
787
787
|
"Agents are defined as .md files in the configured user agent directory (for LSD this is typically ~/.lsd/agent/agents/) or project-local .lsd/agents/, with legacy support for .gsd/agents/ and .pi/agents/.",
|
|
788
788
|
"Use the /subagent command to list available agents and their descriptions.",
|
|
789
|
-
"Use chain mode to pipeline: scout finds context, planner designs, worker implements.",
|
|
790
789
|
"Set background: true (single mode only) to run detached — returns immediately with a sa_xxxx job ID. Completion is announced back into the session. Use await_subagent or /subagents to manage background jobs.",
|
|
791
790
|
].join(" "),
|
|
792
791
|
promptGuidelines: [
|
|
793
792
|
"Use subagent to delegate self-contained tasks that benefit from an isolated context window.",
|
|
794
|
-
"
|
|
795
|
-
"
|
|
793
|
+
"When scout is the right fit, call the subagent tool directly — do not type '/subagent' as a shell-like command.",
|
|
794
|
+
"Valid call shapes: single mode uses { agent, task }, parallel mode uses { tasks: [{ agent, task }, ...] }, and chain mode uses { chain: [{ agent, task }, ...] }.",
|
|
795
|
+
"Recon planning rule: use no scout for narrow known-file work, one scout for one broad unfamiliar subsystem, and parallel scouts only when the work spans multiple loosely-coupled subsystems.",
|
|
796
|
+
"Use scout only for broad or unfamiliar codebase reconnaissance before you read many files yourself; save direct reads for targeted lookups once the relevant files are known.",
|
|
797
|
+
"Do not use scout as the reviewer, auditor, or final judge. Scout should map architecture, files, ownership, and likely hotspots for another agent or the parent model to evaluate.",
|
|
798
|
+
"If understanding the task would require scanning multiple files or folders to figure out architecture, routes, data flow, or ownership, launch scout first with single mode: { agent: 'scout', task: '...' }.",
|
|
799
|
+
"If reconnaissance spans multiple loosely-coupled subsystems, prefer parallel scout subagents with { tasks: [{ agent: 'scout', task: 'map frontend...' }, { agent: 'scout', task: 'map backend...' }] }.",
|
|
800
|
+
"When using scout for a review-like request, phrase the task as mapping: ask for architecture, key files, hotspots, and likely risk areas to inspect next — not for a final ranked review.",
|
|
801
|
+
"For broad review or audit requests, use scout only as a prep step; the parent model or a reviewer should make the final judgments.",
|
|
802
|
+
"Skip scout when the user already named the exact file/function to inspect or the task is obviously narrow.",
|
|
796
803
|
"Use parallel mode when tasks are independent and don't need each other's output.",
|
|
797
|
-
"Always check available agents with /subagent before choosing one.",
|
|
798
804
|
"Use background: true when the user wants to keep chatting while a long-running agent works in parallel.",
|
|
799
805
|
"If the user wants to wait for a background subagent result, use await_subagent.",
|
|
800
806
|
],
|
|
@@ -1081,8 +1087,7 @@ export default function (pi) {
|
|
|
1081
1087
|
const scope = args.agentScope ?? "both";
|
|
1082
1088
|
if (args.chain && args.chain.length > 0) {
|
|
1083
1089
|
let text = theme.fg("toolTitle", theme.bold("subagent ")) +
|
|
1084
|
-
theme.fg("accent", `chain (${args.chain.length} steps)`)
|
|
1085
|
-
theme.fg("muted", ` [${scope}]`);
|
|
1090
|
+
theme.fg("accent", `chain (${args.chain.length} steps)`);
|
|
1086
1091
|
for (let i = 0; i < Math.min(args.chain.length, 3); i++) {
|
|
1087
1092
|
const step = args.chain[i];
|
|
1088
1093
|
// Clean up {previous} placeholder for display
|
|
@@ -1101,8 +1106,7 @@ export default function (pi) {
|
|
|
1101
1106
|
}
|
|
1102
1107
|
if (args.tasks && args.tasks.length > 0) {
|
|
1103
1108
|
let text = theme.fg("toolTitle", theme.bold("subagent ")) +
|
|
1104
|
-
theme.fg("accent", `parallel (${args.tasks.length} tasks)`)
|
|
1105
|
-
theme.fg("muted", ` [${scope}]`);
|
|
1109
|
+
theme.fg("accent", `parallel (${args.tasks.length} tasks)`);
|
|
1106
1110
|
for (const t of args.tasks.slice(0, 3)) {
|
|
1107
1111
|
const preview = t.task.length > 40 ? `${t.task.slice(0, 40)}...` : t.task;
|
|
1108
1112
|
text += `\n ${theme.fg("accent", t.agent)}${theme.fg("dim", ` ${preview}`)}`;
|
|
@@ -1114,8 +1118,7 @@ export default function (pi) {
|
|
|
1114
1118
|
const agentName = args.agent || "...";
|
|
1115
1119
|
const preview = args.task ? (args.task.length > 60 ? `${args.task.slice(0, 60)}...` : args.task) : "...";
|
|
1116
1120
|
let text = theme.fg("toolTitle", theme.bold("subagent ")) +
|
|
1117
|
-
theme.fg("accent", agentName)
|
|
1118
|
-
theme.fg("muted", ` [${scope}]`);
|
|
1121
|
+
theme.fg("accent", agentName);
|
|
1119
1122
|
text += `\n ${theme.fg("dim", preview)}`;
|
|
1120
1123
|
return new Text(text, 0, 0);
|
|
1121
1124
|
},
|
|
@@ -222,12 +222,15 @@ function makeGroupKey(groupBy, project, model) {
|
|
|
222
222
|
}
|
|
223
223
|
function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
224
224
|
const rows = new Map();
|
|
225
|
+
const userPromptRows = new Map();
|
|
225
226
|
let filesScanned = 0;
|
|
226
227
|
let matchedMessages = 0;
|
|
228
|
+
let matchedUserPrompts = 0;
|
|
227
229
|
for (const file of sessionFiles) {
|
|
228
230
|
filesScanned++;
|
|
229
231
|
let projectLabel = basename(file);
|
|
230
232
|
let headerResolved = false;
|
|
233
|
+
let currentModel = "";
|
|
231
234
|
const raw = readFileSync(file, "utf-8");
|
|
232
235
|
for (const line of raw.split("\n")) {
|
|
233
236
|
if (!line.trim())
|
|
@@ -246,42 +249,83 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
246
249
|
headerResolved = true;
|
|
247
250
|
}
|
|
248
251
|
}
|
|
252
|
+
// Track model changes
|
|
253
|
+
if (parsed?.type === "model_change" && parsed.provider && parsed.modelId) {
|
|
254
|
+
currentModel = `${parsed.provider}/${parsed.modelId}`;
|
|
255
|
+
}
|
|
249
256
|
const message = parsed?.type === "message" ? parsed.message : undefined;
|
|
250
|
-
if (!message
|
|
251
|
-
continue;
|
|
252
|
-
const timestamp = Number(message.timestamp ?? 0);
|
|
253
|
-
if (!timestamp || timestamp < startMs || timestamp >= endMs)
|
|
257
|
+
if (!message)
|
|
254
258
|
continue;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
259
|
+
if (message.role === "assistant") {
|
|
260
|
+
const timestamp = Number(message.timestamp ?? 0);
|
|
261
|
+
if (!timestamp || timestamp < startMs || timestamp >= endMs)
|
|
262
|
+
continue;
|
|
263
|
+
matchedMessages++;
|
|
264
|
+
const model = message.provider && message.model ? `${message.provider}/${message.model}` : currentModel;
|
|
265
|
+
const key = makeGroupKey(groupBy, projectLabel, model);
|
|
266
|
+
const usage = message.usage ?? {};
|
|
267
|
+
const input = Number(usage.input ?? 0);
|
|
268
|
+
const output = Number(usage.output ?? 0);
|
|
269
|
+
const cacheRead = Number(usage.cacheRead ?? 0);
|
|
270
|
+
const cacheWrite = Number(usage.cacheWrite ?? 0);
|
|
271
|
+
const cost = Number(usage.cost?.total ?? 0);
|
|
272
|
+
const total = input + output + cacheRead + cacheWrite;
|
|
273
|
+
const existing = rows.get(key) ?? {
|
|
274
|
+
key,
|
|
275
|
+
project: groupBy === "model" ? "—" : projectLabel,
|
|
276
|
+
model: groupBy === "project" ? "—" : model,
|
|
277
|
+
messages: 0,
|
|
278
|
+
userPrompts: 0,
|
|
279
|
+
input: 0,
|
|
280
|
+
output: 0,
|
|
281
|
+
cacheRead: 0,
|
|
282
|
+
cacheWrite: 0,
|
|
283
|
+
total: 0,
|
|
284
|
+
cost: 0,
|
|
285
|
+
};
|
|
286
|
+
existing.messages += 1;
|
|
287
|
+
existing.input += input;
|
|
288
|
+
existing.output += output;
|
|
289
|
+
existing.cacheRead += cacheRead;
|
|
290
|
+
existing.cacheWrite += cacheWrite;
|
|
291
|
+
existing.total += total;
|
|
292
|
+
existing.cost += cost;
|
|
293
|
+
rows.set(key, existing);
|
|
294
|
+
}
|
|
295
|
+
else if (message.role === "user") {
|
|
296
|
+
const timestamp = Number(message.timestamp ?? 0);
|
|
297
|
+
if (!timestamp || timestamp < startMs || timestamp >= endMs)
|
|
298
|
+
continue;
|
|
299
|
+
matchedUserPrompts++;
|
|
300
|
+
const model = currentModel;
|
|
301
|
+
const key = makeGroupKey(groupBy, projectLabel, model);
|
|
302
|
+
const existing = userPromptRows.get(key) ?? {
|
|
303
|
+
key,
|
|
304
|
+
project: groupBy === "model" ? "—" : projectLabel,
|
|
305
|
+
model: groupBy === "project" ? "—" : model,
|
|
306
|
+
messages: 0,
|
|
307
|
+
userPrompts: 0,
|
|
308
|
+
input: 0,
|
|
309
|
+
output: 0,
|
|
310
|
+
cacheRead: 0,
|
|
311
|
+
cacheWrite: 0,
|
|
312
|
+
total: 0,
|
|
313
|
+
cost: 0,
|
|
314
|
+
};
|
|
315
|
+
existing.userPrompts += 1;
|
|
316
|
+
userPromptRows.set(key, existing);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Merge user prompt counts into the main rows
|
|
321
|
+
for (const [key, userRow] of userPromptRows.entries()) {
|
|
322
|
+
const existing = rows.get(key);
|
|
323
|
+
if (existing) {
|
|
324
|
+
existing.userPrompts = userRow.userPrompts;
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
// User prompts without assistant responses (edge case)
|
|
328
|
+
rows.set(key, userRow);
|
|
285
329
|
}
|
|
286
330
|
}
|
|
287
331
|
const orderedRows = [...rows.values()].sort((left, right) => {
|
|
@@ -291,6 +335,7 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
291
335
|
});
|
|
292
336
|
const totals = orderedRows.reduce((acc, row) => {
|
|
293
337
|
acc.messages += row.messages;
|
|
338
|
+
acc.userPrompts += row.userPrompts;
|
|
294
339
|
acc.input += row.input;
|
|
295
340
|
acc.output += row.output;
|
|
296
341
|
acc.cacheRead += row.cacheRead;
|
|
@@ -298,7 +343,7 @@ function collectUsage(sessionFiles, startMs, endMs, scope, groupBy) {
|
|
|
298
343
|
acc.total += row.total;
|
|
299
344
|
acc.cost += row.cost;
|
|
300
345
|
return acc;
|
|
301
|
-
}, { messages: 0, input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0, cost: 0 });
|
|
346
|
+
}, { messages: 0, userPrompts: 0, input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0, cost: 0 });
|
|
302
347
|
return {
|
|
303
348
|
label: "",
|
|
304
349
|
scope,
|
|
@@ -318,6 +363,7 @@ function renderTable(report) {
|
|
|
318
363
|
: "model";
|
|
319
364
|
const displayRows = report.rows.map((row) => ({
|
|
320
365
|
label: row.key,
|
|
366
|
+
userPrompts: String(row.userPrompts),
|
|
321
367
|
msgs: String(row.messages),
|
|
322
368
|
input: formatInt(row.input),
|
|
323
369
|
output: formatInt(row.output),
|
|
@@ -328,6 +374,7 @@ function renderTable(report) {
|
|
|
328
374
|
}));
|
|
329
375
|
const widths = {
|
|
330
376
|
label: Math.max(firstColumnHeader.length, ...displayRows.map((row) => row.label.length), 5),
|
|
377
|
+
userPrompts: Math.max(11, ...displayRows.map((row) => row.userPrompts.length), String(report.totals.userPrompts).length),
|
|
331
378
|
msgs: Math.max(4, ...displayRows.map((row) => row.msgs.length), String(report.totals.messages).length),
|
|
332
379
|
input: Math.max(5, ...displayRows.map((row) => row.input.length), formatInt(report.totals.input).length),
|
|
333
380
|
output: Math.max(6, ...displayRows.map((row) => row.output.length), formatInt(report.totals.output).length),
|
|
@@ -338,6 +385,7 @@ function renderTable(report) {
|
|
|
338
385
|
};
|
|
339
386
|
const header = [
|
|
340
387
|
firstColumnHeader.padEnd(widths.label),
|
|
388
|
+
"user prompts".padStart(widths.userPrompts),
|
|
341
389
|
"msgs".padStart(widths.msgs),
|
|
342
390
|
"input".padStart(widths.input),
|
|
343
391
|
"output".padStart(widths.output),
|
|
@@ -349,6 +397,7 @@ function renderTable(report) {
|
|
|
349
397
|
const divider = "-".repeat(header.length);
|
|
350
398
|
const body = displayRows.map((row) => [
|
|
351
399
|
row.label.padEnd(widths.label),
|
|
400
|
+
row.userPrompts.padStart(widths.userPrompts),
|
|
352
401
|
row.msgs.padStart(widths.msgs),
|
|
353
402
|
row.input.padStart(widths.input),
|
|
354
403
|
row.output.padStart(widths.output),
|
|
@@ -359,6 +408,7 @@ function renderTable(report) {
|
|
|
359
408
|
].join(" "));
|
|
360
409
|
const totalsLine = [
|
|
361
410
|
"TOTAL".padEnd(widths.label),
|
|
411
|
+
String(report.totals.userPrompts).padStart(widths.userPrompts),
|
|
362
412
|
String(report.totals.messages).padStart(widths.msgs),
|
|
363
413
|
formatInt(report.totals.input).padStart(widths.input),
|
|
364
414
|
formatInt(report.totals.output).padStart(widths.output),
|
|
@@ -377,7 +427,8 @@ function renderReport(report) {
|
|
|
377
427
|
`Grouped by: ${report.groupBy}`,
|
|
378
428
|
`Sessions root: ${report.sessionsRoot}`,
|
|
379
429
|
`Session files scanned: ${report.filesScanned}`,
|
|
380
|
-
`
|
|
430
|
+
`User prompts: ${report.totals.userPrompts}`,
|
|
431
|
+
`Assistant messages: ${report.matchedMessages}`,
|
|
381
432
|
].join("\n");
|
|
382
433
|
if (report.rows.length === 0) {
|
|
383
434
|
return `${summary}\n\nNo assistant usage found for that range.`;
|
package/package.json
CHANGED
|
@@ -5994,6 +5994,108 @@ export declare const MODELS: {
|
|
|
5994
5994
|
};
|
|
5995
5995
|
};
|
|
5996
5996
|
readonly "openai-codex": {
|
|
5997
|
+
readonly "gpt-5": {
|
|
5998
|
+
id: string;
|
|
5999
|
+
name: string;
|
|
6000
|
+
api: "openai-codex-responses";
|
|
6001
|
+
provider: string;
|
|
6002
|
+
baseUrl: string;
|
|
6003
|
+
reasoning: true;
|
|
6004
|
+
input: ("text" | "image")[];
|
|
6005
|
+
cost: {
|
|
6006
|
+
input: number;
|
|
6007
|
+
output: number;
|
|
6008
|
+
cacheRead: number;
|
|
6009
|
+
cacheWrite: number;
|
|
6010
|
+
};
|
|
6011
|
+
contextWindow: number;
|
|
6012
|
+
maxTokens: number;
|
|
6013
|
+
};
|
|
6014
|
+
readonly "gpt-5-chat-latest": {
|
|
6015
|
+
id: string;
|
|
6016
|
+
name: string;
|
|
6017
|
+
api: "openai-codex-responses";
|
|
6018
|
+
provider: string;
|
|
6019
|
+
baseUrl: string;
|
|
6020
|
+
reasoning: false;
|
|
6021
|
+
input: ("text" | "image")[];
|
|
6022
|
+
cost: {
|
|
6023
|
+
input: number;
|
|
6024
|
+
output: number;
|
|
6025
|
+
cacheRead: number;
|
|
6026
|
+
cacheWrite: number;
|
|
6027
|
+
};
|
|
6028
|
+
contextWindow: number;
|
|
6029
|
+
maxTokens: number;
|
|
6030
|
+
};
|
|
6031
|
+
readonly "gpt-5-codex": {
|
|
6032
|
+
id: string;
|
|
6033
|
+
name: string;
|
|
6034
|
+
api: "openai-codex-responses";
|
|
6035
|
+
provider: string;
|
|
6036
|
+
baseUrl: string;
|
|
6037
|
+
reasoning: true;
|
|
6038
|
+
input: ("text" | "image")[];
|
|
6039
|
+
cost: {
|
|
6040
|
+
input: number;
|
|
6041
|
+
output: number;
|
|
6042
|
+
cacheRead: number;
|
|
6043
|
+
cacheWrite: number;
|
|
6044
|
+
};
|
|
6045
|
+
contextWindow: number;
|
|
6046
|
+
maxTokens: number;
|
|
6047
|
+
};
|
|
6048
|
+
readonly "gpt-5-mini": {
|
|
6049
|
+
id: string;
|
|
6050
|
+
name: string;
|
|
6051
|
+
api: "openai-codex-responses";
|
|
6052
|
+
provider: string;
|
|
6053
|
+
baseUrl: string;
|
|
6054
|
+
reasoning: true;
|
|
6055
|
+
input: ("text" | "image")[];
|
|
6056
|
+
cost: {
|
|
6057
|
+
input: number;
|
|
6058
|
+
output: number;
|
|
6059
|
+
cacheRead: number;
|
|
6060
|
+
cacheWrite: number;
|
|
6061
|
+
};
|
|
6062
|
+
contextWindow: number;
|
|
6063
|
+
maxTokens: number;
|
|
6064
|
+
};
|
|
6065
|
+
readonly "gpt-5-nano": {
|
|
6066
|
+
id: string;
|
|
6067
|
+
name: string;
|
|
6068
|
+
api: "openai-codex-responses";
|
|
6069
|
+
provider: string;
|
|
6070
|
+
baseUrl: string;
|
|
6071
|
+
reasoning: true;
|
|
6072
|
+
input: ("text" | "image")[];
|
|
6073
|
+
cost: {
|
|
6074
|
+
input: number;
|
|
6075
|
+
output: number;
|
|
6076
|
+
cacheRead: number;
|
|
6077
|
+
cacheWrite: number;
|
|
6078
|
+
};
|
|
6079
|
+
contextWindow: number;
|
|
6080
|
+
maxTokens: number;
|
|
6081
|
+
};
|
|
6082
|
+
readonly "gpt-5-pro": {
|
|
6083
|
+
id: string;
|
|
6084
|
+
name: string;
|
|
6085
|
+
api: "openai-codex-responses";
|
|
6086
|
+
provider: string;
|
|
6087
|
+
baseUrl: string;
|
|
6088
|
+
reasoning: true;
|
|
6089
|
+
input: ("text" | "image")[];
|
|
6090
|
+
cost: {
|
|
6091
|
+
input: number;
|
|
6092
|
+
output: number;
|
|
6093
|
+
cacheRead: number;
|
|
6094
|
+
cacheWrite: number;
|
|
6095
|
+
};
|
|
6096
|
+
contextWindow: number;
|
|
6097
|
+
maxTokens: number;
|
|
6098
|
+
};
|
|
5997
6099
|
readonly "gpt-5.1": {
|
|
5998
6100
|
id: string;
|
|
5999
6101
|
name: string;
|
|
@@ -6011,6 +6113,40 @@ export declare const MODELS: {
|
|
|
6011
6113
|
contextWindow: number;
|
|
6012
6114
|
maxTokens: number;
|
|
6013
6115
|
};
|
|
6116
|
+
readonly "gpt-5.1-chat-latest": {
|
|
6117
|
+
id: string;
|
|
6118
|
+
name: string;
|
|
6119
|
+
api: "openai-codex-responses";
|
|
6120
|
+
provider: string;
|
|
6121
|
+
baseUrl: string;
|
|
6122
|
+
reasoning: true;
|
|
6123
|
+
input: ("text" | "image")[];
|
|
6124
|
+
cost: {
|
|
6125
|
+
input: number;
|
|
6126
|
+
output: number;
|
|
6127
|
+
cacheRead: number;
|
|
6128
|
+
cacheWrite: number;
|
|
6129
|
+
};
|
|
6130
|
+
contextWindow: number;
|
|
6131
|
+
maxTokens: number;
|
|
6132
|
+
};
|
|
6133
|
+
readonly "gpt-5.1-codex": {
|
|
6134
|
+
id: string;
|
|
6135
|
+
name: string;
|
|
6136
|
+
api: "openai-codex-responses";
|
|
6137
|
+
provider: string;
|
|
6138
|
+
baseUrl: string;
|
|
6139
|
+
reasoning: true;
|
|
6140
|
+
input: ("text" | "image")[];
|
|
6141
|
+
cost: {
|
|
6142
|
+
input: number;
|
|
6143
|
+
output: number;
|
|
6144
|
+
cacheRead: number;
|
|
6145
|
+
cacheWrite: number;
|
|
6146
|
+
};
|
|
6147
|
+
contextWindow: number;
|
|
6148
|
+
maxTokens: number;
|
|
6149
|
+
};
|
|
6014
6150
|
readonly "gpt-5.1-codex-max": {
|
|
6015
6151
|
id: string;
|
|
6016
6152
|
name: string;
|
|
@@ -6062,6 +6198,23 @@ export declare const MODELS: {
|
|
|
6062
6198
|
contextWindow: number;
|
|
6063
6199
|
maxTokens: number;
|
|
6064
6200
|
};
|
|
6201
|
+
readonly "gpt-5.2-chat-latest": {
|
|
6202
|
+
id: string;
|
|
6203
|
+
name: string;
|
|
6204
|
+
api: "openai-codex-responses";
|
|
6205
|
+
provider: string;
|
|
6206
|
+
baseUrl: string;
|
|
6207
|
+
reasoning: true;
|
|
6208
|
+
input: ("text" | "image")[];
|
|
6209
|
+
cost: {
|
|
6210
|
+
input: number;
|
|
6211
|
+
output: number;
|
|
6212
|
+
cacheRead: number;
|
|
6213
|
+
cacheWrite: number;
|
|
6214
|
+
};
|
|
6215
|
+
contextWindow: number;
|
|
6216
|
+
maxTokens: number;
|
|
6217
|
+
};
|
|
6065
6218
|
readonly "gpt-5.2-codex": {
|
|
6066
6219
|
id: string;
|
|
6067
6220
|
name: string;
|
|
@@ -6079,6 +6232,23 @@ export declare const MODELS: {
|
|
|
6079
6232
|
contextWindow: number;
|
|
6080
6233
|
maxTokens: number;
|
|
6081
6234
|
};
|
|
6235
|
+
readonly "gpt-5.2-pro": {
|
|
6236
|
+
id: string;
|
|
6237
|
+
name: string;
|
|
6238
|
+
api: "openai-codex-responses";
|
|
6239
|
+
provider: string;
|
|
6240
|
+
baseUrl: string;
|
|
6241
|
+
reasoning: true;
|
|
6242
|
+
input: ("text" | "image")[];
|
|
6243
|
+
cost: {
|
|
6244
|
+
input: number;
|
|
6245
|
+
output: number;
|
|
6246
|
+
cacheRead: number;
|
|
6247
|
+
cacheWrite: number;
|
|
6248
|
+
};
|
|
6249
|
+
contextWindow: number;
|
|
6250
|
+
maxTokens: number;
|
|
6251
|
+
};
|
|
6082
6252
|
readonly "gpt-5.3-codex": {
|
|
6083
6253
|
id: string;
|
|
6084
6254
|
name: string;
|
|
@@ -6103,7 +6273,7 @@ export declare const MODELS: {
|
|
|
6103
6273
|
provider: string;
|
|
6104
6274
|
baseUrl: string;
|
|
6105
6275
|
reasoning: true;
|
|
6106
|
-
input: "text"[];
|
|
6276
|
+
input: ("text" | "image")[];
|
|
6107
6277
|
cost: {
|
|
6108
6278
|
input: number;
|
|
6109
6279
|
output: number;
|
|
@@ -6130,6 +6300,57 @@ export declare const MODELS: {
|
|
|
6130
6300
|
contextWindow: number;
|
|
6131
6301
|
maxTokens: number;
|
|
6132
6302
|
};
|
|
6303
|
+
readonly "gpt-5.4-mini": {
|
|
6304
|
+
id: string;
|
|
6305
|
+
name: string;
|
|
6306
|
+
api: "openai-codex-responses";
|
|
6307
|
+
provider: string;
|
|
6308
|
+
baseUrl: string;
|
|
6309
|
+
reasoning: true;
|
|
6310
|
+
input: ("text" | "image")[];
|
|
6311
|
+
cost: {
|
|
6312
|
+
input: number;
|
|
6313
|
+
output: number;
|
|
6314
|
+
cacheRead: number;
|
|
6315
|
+
cacheWrite: number;
|
|
6316
|
+
};
|
|
6317
|
+
contextWindow: number;
|
|
6318
|
+
maxTokens: number;
|
|
6319
|
+
};
|
|
6320
|
+
readonly "gpt-5.4-nano": {
|
|
6321
|
+
id: string;
|
|
6322
|
+
name: string;
|
|
6323
|
+
api: "openai-codex-responses";
|
|
6324
|
+
provider: string;
|
|
6325
|
+
baseUrl: string;
|
|
6326
|
+
reasoning: true;
|
|
6327
|
+
input: ("text" | "image")[];
|
|
6328
|
+
cost: {
|
|
6329
|
+
input: number;
|
|
6330
|
+
output: number;
|
|
6331
|
+
cacheRead: number;
|
|
6332
|
+
cacheWrite: number;
|
|
6333
|
+
};
|
|
6334
|
+
contextWindow: number;
|
|
6335
|
+
maxTokens: number;
|
|
6336
|
+
};
|
|
6337
|
+
readonly "gpt-5.4-pro": {
|
|
6338
|
+
id: string;
|
|
6339
|
+
name: string;
|
|
6340
|
+
api: "openai-codex-responses";
|
|
6341
|
+
provider: string;
|
|
6342
|
+
baseUrl: string;
|
|
6343
|
+
reasoning: true;
|
|
6344
|
+
input: ("text" | "image")[];
|
|
6345
|
+
cost: {
|
|
6346
|
+
input: number;
|
|
6347
|
+
output: number;
|
|
6348
|
+
cacheRead: number;
|
|
6349
|
+
cacheWrite: number;
|
|
6350
|
+
};
|
|
6351
|
+
contextWindow: number;
|
|
6352
|
+
maxTokens: number;
|
|
6353
|
+
};
|
|
6133
6354
|
};
|
|
6134
6355
|
readonly opencode: {
|
|
6135
6356
|
readonly "big-pickle": {
|