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
|
@@ -33,12 +33,13 @@ export interface SettingsConfig {
|
|
|
33
33
|
planModeReasoningModel: string;
|
|
34
34
|
planModeReviewModel: string;
|
|
35
35
|
planModeCodingModel: string;
|
|
36
|
+
autoSuggestPlanMode: boolean;
|
|
37
|
+
autoSwitchPlanModel: boolean;
|
|
36
38
|
showImages: boolean;
|
|
37
39
|
autoResizeImages: boolean;
|
|
38
40
|
blockImages: boolean;
|
|
39
41
|
enableSkillCommands: boolean;
|
|
40
|
-
|
|
41
|
-
toolProfile: "minimal" | "balanced";
|
|
42
|
+
toolProfile: "balanced" | "full";
|
|
42
43
|
codexRotate: boolean;
|
|
43
44
|
cacheTimer: boolean;
|
|
44
45
|
pinLastPrompt: boolean;
|
|
@@ -46,6 +47,7 @@ export interface SettingsConfig {
|
|
|
46
47
|
followUpMode: "all" | "one-at-a-time";
|
|
47
48
|
transport: Transport;
|
|
48
49
|
thinkingLevel: ThinkingLevel;
|
|
50
|
+
anthropicAdaptiveByDefault: boolean;
|
|
49
51
|
availableThinkingLevels: ThinkingLevel[];
|
|
50
52
|
currentTheme: string;
|
|
51
53
|
availableThemes: string[];
|
|
@@ -87,6 +89,8 @@ export interface SettingsCallbacks {
|
|
|
87
89
|
onPlanModeReasoningModelChange: (modelRef: string) => void;
|
|
88
90
|
onPlanModeReviewModelChange: (modelRef: string) => void;
|
|
89
91
|
onPlanModeCodingModelChange: (modelRef: string) => void;
|
|
92
|
+
onAutoSuggestPlanModeChange: (enabled: boolean) => void;
|
|
93
|
+
onAutoSwitchPlanModelChange: (enabled: boolean) => void;
|
|
90
94
|
onAutoDreamChange: (enabled: boolean) => void;
|
|
91
95
|
onAutoMemoryChange: (enabled: boolean) => void;
|
|
92
96
|
onTelegramLiveRelayAutoConnectChange: (enabled: boolean) => void;
|
|
@@ -96,8 +100,7 @@ export interface SettingsCallbacks {
|
|
|
96
100
|
onAutoResizeImagesChange: (enabled: boolean) => void;
|
|
97
101
|
onBlockImagesChange: (blocked: boolean) => void;
|
|
98
102
|
onEnableSkillCommandsChange: (enabled: boolean) => void;
|
|
99
|
-
|
|
100
|
-
onToolProfileChange: (profile: "minimal" | "balanced") => void;
|
|
103
|
+
onToolProfileChange: (profile: "balanced" | "full") => void;
|
|
101
104
|
onCodexRotateChange: (enabled: boolean) => void;
|
|
102
105
|
onCacheTimerChange: (enabled: boolean) => void;
|
|
103
106
|
onPinLastPromptChange: (enabled: boolean) => void;
|
|
@@ -105,6 +108,7 @@ export interface SettingsCallbacks {
|
|
|
105
108
|
onFollowUpModeChange: (mode: "all" | "one-at-a-time") => void;
|
|
106
109
|
onTransportChange: (transport: Transport) => void;
|
|
107
110
|
onThinkingLevelChange: (level: ThinkingLevel) => void;
|
|
111
|
+
onAnthropicAdaptiveByDefaultChange: (enabled: boolean) => void;
|
|
108
112
|
onThemeChange: (theme: string) => void;
|
|
109
113
|
onThemePreview?: (theme: string) => void;
|
|
110
114
|
onThemeAccentChange: (accent: string) => void;
|
|
@@ -255,6 +259,20 @@ export class SettingsSelectorComponent extends Container {
|
|
|
255
259
|
currentValue: config.planModeCodingModel,
|
|
256
260
|
submenu: config.planModeCodingModelSubmenu,
|
|
257
261
|
},
|
|
262
|
+
{
|
|
263
|
+
id: "auto-suggest-plan-mode",
|
|
264
|
+
label: "Auto-suggest plan mode",
|
|
265
|
+
description: "Ask the LLM to suggest plan mode for large/complex tasks",
|
|
266
|
+
currentValue: config.autoSuggestPlanMode ? "true" : "false",
|
|
267
|
+
values: ["true", "false"],
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: "auto-switch-plan-model",
|
|
271
|
+
label: "OpusPlan mode",
|
|
272
|
+
description: "On plan entry: auto-switch to Plan reasoning model (must be set). On approval: offer new session with Plan coding model + worker agent",
|
|
273
|
+
currentValue: config.autoSwitchPlanModel ? "true" : "false",
|
|
274
|
+
values: ["true", "false"],
|
|
275
|
+
},
|
|
258
276
|
{
|
|
259
277
|
id: "steering-mode",
|
|
260
278
|
label: "Steering mode",
|
|
@@ -356,6 +374,13 @@ export class SettingsSelectorComponent extends Container {
|
|
|
356
374
|
() => done(),
|
|
357
375
|
),
|
|
358
376
|
},
|
|
377
|
+
{
|
|
378
|
+
id: "anthropic-adaptive-default",
|
|
379
|
+
label: "Anthropic adaptive",
|
|
380
|
+
description: "Default to adaptive thinking for supported Anthropic models",
|
|
381
|
+
currentValue: config.anthropicAdaptiveByDefault ? "true" : "false",
|
|
382
|
+
values: ["true", "false"],
|
|
383
|
+
},
|
|
359
384
|
{
|
|
360
385
|
id: "theme",
|
|
361
386
|
label: "Theme",
|
|
@@ -455,9 +480,9 @@ export class SettingsSelectorComponent extends Container {
|
|
|
455
480
|
items.splice(skillCommandsIndex + 1, 0, {
|
|
456
481
|
id: "tool-profile",
|
|
457
482
|
label: "Tool profile",
|
|
458
|
-
description: "Choose the default active tool set: balanced for day-to-day coding,
|
|
483
|
+
description: "Choose the default active tool set: balanced for day-to-day coding, full to enable all available tools",
|
|
459
484
|
currentValue: config.toolProfile,
|
|
460
|
-
values: ["balanced", "
|
|
485
|
+
values: ["balanced", "full"],
|
|
461
486
|
});
|
|
462
487
|
|
|
463
488
|
// Codex rotate toggle (insert after tool-profile)
|
|
@@ -633,6 +658,12 @@ export class SettingsSelectorComponent extends Container {
|
|
|
633
658
|
case "plan-mode-coding-model":
|
|
634
659
|
callbacks.onPlanModeCodingModelChange(newValue);
|
|
635
660
|
break;
|
|
661
|
+
case "auto-suggest-plan-mode":
|
|
662
|
+
callbacks.onAutoSuggestPlanModeChange(newValue === "true");
|
|
663
|
+
break;
|
|
664
|
+
case "auto-switch-plan-model":
|
|
665
|
+
callbacks.onAutoSwitchPlanModelChange(newValue === "true");
|
|
666
|
+
break;
|
|
636
667
|
case "show-images":
|
|
637
668
|
callbacks.onShowImagesChange(newValue === "true");
|
|
638
669
|
break;
|
|
@@ -645,11 +676,8 @@ export class SettingsSelectorComponent extends Container {
|
|
|
645
676
|
case "skill-commands":
|
|
646
677
|
callbacks.onEnableSkillCommandsChange(newValue === "true");
|
|
647
678
|
break;
|
|
648
|
-
case "tool-search":
|
|
649
|
-
callbacks.onToolSearchChange(newValue === "true");
|
|
650
|
-
break;
|
|
651
679
|
case "tool-profile":
|
|
652
|
-
callbacks.onToolProfileChange(newValue as "
|
|
680
|
+
callbacks.onToolProfileChange(newValue as "balanced" | "full");
|
|
653
681
|
break;
|
|
654
682
|
case "codex-rotate":
|
|
655
683
|
callbacks.onCodexRotateChange(newValue === "true");
|
|
@@ -681,6 +709,9 @@ export class SettingsSelectorComponent extends Container {
|
|
|
681
709
|
case "transport":
|
|
682
710
|
callbacks.onTransportChange(newValue as Transport);
|
|
683
711
|
break;
|
|
712
|
+
case "anthropic-adaptive-default":
|
|
713
|
+
callbacks.onAnthropicAdaptiveByDefaultChange(newValue === "true");
|
|
714
|
+
break;
|
|
684
715
|
case "hide-thinking":
|
|
685
716
|
callbacks.onHideThinkingBlockChange(newValue === "true");
|
|
686
717
|
break;
|
|
@@ -508,6 +508,17 @@ export class ToolExecutionComponent extends Container {
|
|
|
508
508
|
if (resultComponent !== undefined) {
|
|
509
509
|
this.contentBox.addChild(resultComponent);
|
|
510
510
|
customRendererHasContent = true;
|
|
511
|
+
// bg_shell: show /bg hint after start/list/digest actions
|
|
512
|
+
if (this.toolName === 'bg_shell' && this.result && !this.isPartial) {
|
|
513
|
+
const details = this.result.details as Record<string, unknown> | undefined;
|
|
514
|
+
const action = details?.action as string | undefined;
|
|
515
|
+
if (action === 'start' || action === 'list' || action === 'digest') {
|
|
516
|
+
this.contentBox.addChild(new Text(
|
|
517
|
+
'\n' + theme.fg('muted', 'Tip: run /bg to manage background processes'),
|
|
518
|
+
0, 0,
|
|
519
|
+
));
|
|
520
|
+
}
|
|
521
|
+
}
|
|
511
522
|
}
|
|
512
523
|
}
|
|
513
524
|
} catch {
|
|
@@ -178,6 +178,17 @@ export interface InteractiveModeOptions {
|
|
|
178
178
|
runSetupWizard?: () => Promise<void>;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
+
function getToolNamesForProfile(
|
|
182
|
+
profile: "balanced" | "full",
|
|
183
|
+
editMode: "standard" | "hashline",
|
|
184
|
+
availableToolNames: string[],
|
|
185
|
+
): string[] {
|
|
186
|
+
const balancedToolNames = editMode === "hashline"
|
|
187
|
+
? ["hashline_read", "bash", "hashline_edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent", "ask_user_questions"]
|
|
188
|
+
: ["read", "bash", "edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent", "ask_user_questions"];
|
|
189
|
+
return profile === "full" ? availableToolNames : balancedToolNames;
|
|
190
|
+
}
|
|
191
|
+
|
|
181
192
|
export class InteractiveMode {
|
|
182
193
|
private session: AgentSession;
|
|
183
194
|
private ui: TUI;
|
|
@@ -2405,13 +2416,13 @@ export class InteractiveMode {
|
|
|
2405
2416
|
await handleAgentEvent(this as any, event);
|
|
2406
2417
|
}
|
|
2407
2418
|
|
|
2408
|
-
private getLatestPlanModeState(): { active?: boolean; latestPlanPath?: string } | undefined {
|
|
2419
|
+
private getLatestPlanModeState(): { active?: boolean; latestPlanPath?: string; approvalStatus?: string } | undefined {
|
|
2409
2420
|
try {
|
|
2410
2421
|
const entries = this.session.sessionManager.getEntries();
|
|
2411
2422
|
for (let i = entries.length - 1; i >= 0; i--) {
|
|
2412
2423
|
const entry = entries[i];
|
|
2413
2424
|
if (entry.type === "custom" && entry.customType === "plan-mode-state" && entry.data && typeof entry.data === "object") {
|
|
2414
|
-
return entry.data as { active?: boolean; latestPlanPath?: string };
|
|
2425
|
+
return entry.data as { active?: boolean; latestPlanPath?: string; approvalStatus?: string };
|
|
2415
2426
|
}
|
|
2416
2427
|
}
|
|
2417
2428
|
} catch {
|
|
@@ -2421,17 +2432,26 @@ export class InteractiveMode {
|
|
|
2421
2432
|
}
|
|
2422
2433
|
|
|
2423
2434
|
private getPlanModeEditorBadge(): string {
|
|
2435
|
+
// Show badge when actively in plan mode OR when plan is approved (executing)
|
|
2436
|
+
// Only clear when plan is cancelled or there's no plan state at all.
|
|
2437
|
+
const permMode = getPermissionMode();
|
|
2424
2438
|
const planState = this.getLatestPlanModeState();
|
|
2425
|
-
if (!planState?.active) return "";
|
|
2426
2439
|
|
|
2427
|
-
const
|
|
2440
|
+
const inPlanMode = permMode === "plan";
|
|
2441
|
+
const planApproved = planState?.approvalStatus === "approved" && !planState?.active;
|
|
2442
|
+
|
|
2443
|
+
if (!inPlanMode && !planApproved) return "";
|
|
2444
|
+
|
|
2445
|
+
const planName = planState?.latestPlanPath
|
|
2428
2446
|
? path.basename(planState.latestPlanPath).replace(/\.md$/i, "")
|
|
2429
2447
|
: "draft";
|
|
2430
|
-
const badgeText =
|
|
2448
|
+
const badgeText = inPlanMode
|
|
2449
|
+
? ` plan ${planName} · /plan to show plan `
|
|
2450
|
+
: ` plan ${planName} · executing `;
|
|
2431
2451
|
|
|
2432
2452
|
// Deterministic "random" color per plan so it feels varied without flickering.
|
|
2433
2453
|
const palette = [18, 19, 20, 24, 25, 26, 27, 54, 55, 56, 57, 60, 88, 89, 90, 124, 125, 126, 160, 161, 162];
|
|
2434
|
-
const seed = planState
|
|
2454
|
+
const seed = planState?.latestPlanPath ?? planName;
|
|
2435
2455
|
const digest = crypto.createHash("sha256").update(seed).digest();
|
|
2436
2456
|
const bg256 = palette[digest[0] % palette.length] ?? 25;
|
|
2437
2457
|
|
|
@@ -3407,11 +3427,12 @@ export class InteractiveMode {
|
|
|
3407
3427
|
planModeReasoningModel: this.settingsManager.getPlanModeReasoningModel() ?? "default",
|
|
3408
3428
|
planModeReviewModel: this.settingsManager.getPlanModeReviewModel() ?? "default",
|
|
3409
3429
|
planModeCodingModel: this.settingsManager.getPlanModeCodingModel() ?? "default",
|
|
3430
|
+
autoSuggestPlanMode: this.settingsManager.getAutoSuggestPlanMode(),
|
|
3431
|
+
autoSwitchPlanModel: this.settingsManager.getAutoSwitchPlanModel(),
|
|
3410
3432
|
showImages: this.settingsManager.getShowImages(),
|
|
3411
3433
|
autoResizeImages: this.settingsManager.getImageAutoResize(),
|
|
3412
3434
|
blockImages: this.settingsManager.getBlockImages(),
|
|
3413
3435
|
enableSkillCommands: this.settingsManager.getEnableSkillCommands(),
|
|
3414
|
-
toolSearch: this.settingsManager.getToolSearch(),
|
|
3415
3436
|
toolProfile: this.settingsManager.getToolProfile(),
|
|
3416
3437
|
codexRotate: this.settingsManager.getCodexRotate(),
|
|
3417
3438
|
cacheTimer: this.settingsManager.getCacheTimer(),
|
|
@@ -3420,6 +3441,7 @@ export class InteractiveMode {
|
|
|
3420
3441
|
followUpMode: this.session.followUpMode,
|
|
3421
3442
|
transport: this.settingsManager.getTransport(),
|
|
3422
3443
|
thinkingLevel: this.session.thinkingLevel,
|
|
3444
|
+
anthropicAdaptiveByDefault: this.settingsManager.getAnthropicAdaptiveByDefault(),
|
|
3423
3445
|
availableThinkingLevels: this.session.getAvailableThinkingLevels(),
|
|
3424
3446
|
currentTheme: this.settingsManager.getTheme() || "dark",
|
|
3425
3447
|
currentThemeAccent: this.settingsManager.getThemeAccent() || "default",
|
|
@@ -3554,6 +3576,14 @@ export class InteractiveMode {
|
|
|
3554
3576
|
`Plan coding model: ${modelRef === "default" ? "use current/default model" : modelRef}`,
|
|
3555
3577
|
);
|
|
3556
3578
|
},
|
|
3579
|
+
onAutoSuggestPlanModeChange: (enabled) => {
|
|
3580
|
+
this.settingsManager.setAutoSuggestPlanMode(enabled);
|
|
3581
|
+
this.showStatus(`Auto-suggest plan mode: ${enabled ? "enabled" : "disabled"}`);
|
|
3582
|
+
},
|
|
3583
|
+
onAutoSwitchPlanModelChange: (enabled) => {
|
|
3584
|
+
this.settingsManager.setAutoSwitchPlanModel(enabled);
|
|
3585
|
+
this.showStatus(`OpusPlan mode: ${enabled ? "enabled" : "disabled"}`);
|
|
3586
|
+
},
|
|
3557
3587
|
onShowImagesChange: (enabled) => {
|
|
3558
3588
|
this.settingsManager.setShowImages(enabled);
|
|
3559
3589
|
for (const child of this.chatContainer.children) {
|
|
@@ -3572,28 +3602,10 @@ export class InteractiveMode {
|
|
|
3572
3602
|
this.settingsManager.setEnableSkillCommands(enabled);
|
|
3573
3603
|
this.setupAutocomplete();
|
|
3574
3604
|
},
|
|
3575
|
-
onToolSearchChange: (enabled) => {
|
|
3576
|
-
const profile = enabled ? "minimal" : "balanced";
|
|
3577
|
-
this.settingsManager.setToolProfile(profile);
|
|
3578
|
-
const nextActiveToolNames = profile === "minimal"
|
|
3579
|
-
? (this.session.editMode === "hashline"
|
|
3580
|
-
? ["hashline_read", "bash", "lsp", "tool_search", "tool_enable"]
|
|
3581
|
-
: ["read", "bash", "lsp", "tool_search", "tool_enable"])
|
|
3582
|
-
: (this.session.editMode === "hashline"
|
|
3583
|
-
? ["hashline_read", "bash", "hashline_edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent"]
|
|
3584
|
-
: ["read", "bash", "edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent"]);
|
|
3585
|
-
this.session.setActiveToolsByName(nextActiveToolNames);
|
|
3586
|
-
this.showStatus(`Tool profile: ${profile}`);
|
|
3587
|
-
},
|
|
3588
3605
|
onToolProfileChange: (profile) => {
|
|
3589
3606
|
this.settingsManager.setToolProfile(profile);
|
|
3590
|
-
const
|
|
3591
|
-
|
|
3592
|
-
? ["hashline_read", "bash", "lsp", "tool_search", "tool_enable"]
|
|
3593
|
-
: ["read", "bash", "lsp", "tool_search", "tool_enable"])
|
|
3594
|
-
: (this.session.editMode === "hashline"
|
|
3595
|
-
? ["hashline_read", "bash", "hashline_edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent"]
|
|
3596
|
-
: ["read", "bash", "edit", "write", "lsp", "bg_shell", "tool_search", "tool_enable", "Skill", "subagent", "await_subagent"]);
|
|
3607
|
+
const allToolNames = this.session.getAllTools().map((tool) => tool.name);
|
|
3608
|
+
const nextActiveToolNames = getToolNamesForProfile(profile, this.session.editMode, allToolNames);
|
|
3597
3609
|
this.session.setActiveToolsByName(nextActiveToolNames);
|
|
3598
3610
|
this.showStatus(`Tool profile: ${profile}`);
|
|
3599
3611
|
},
|
|
@@ -3642,6 +3654,10 @@ export class InteractiveMode {
|
|
|
3642
3654
|
this.footer.invalidate();
|
|
3643
3655
|
this.updateEditorBorderColor();
|
|
3644
3656
|
},
|
|
3657
|
+
onAnthropicAdaptiveByDefaultChange: (enabled) => {
|
|
3658
|
+
this.settingsManager.setAnthropicAdaptiveByDefault(enabled);
|
|
3659
|
+
this.showStatus(`Anthropic adaptive default: ${enabled ? "enabled" : "disabled"}`);
|
|
3660
|
+
},
|
|
3645
3661
|
onThemeChange: (themeName) => {
|
|
3646
3662
|
const result = setTheme(themeName, true, this.settingsManager.getThemeAccent());
|
|
3647
3663
|
this.settingsManager.setTheme(themeName);
|
|
@@ -62,6 +62,20 @@ test("buildSystemPrompt: Unix paths pass through unchanged", () => {
|
|
|
62
62
|
assert.ok(prompt.includes("/home/user/project"));
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
+
test("buildSystemPrompt: encourages scout-first reconnaissance when subagent is available", () => {
|
|
66
|
+
const prompt = buildSystemPrompt({
|
|
67
|
+
cwd: "/home/user/project",
|
|
68
|
+
selectedTools: ["read", "lsp", "subagent", "edit", "write"],
|
|
69
|
+
});
|
|
70
|
+
assert.match(prompt, /delegate reconnaissance to the scout subagent/i);
|
|
71
|
+
assert.match(prompt, /0 scouts for narrow known-file work, 1 scout for one broad unfamiliar subsystem/i);
|
|
72
|
+
assert.match(prompt, /For one scout use \{ agent, task \}/i);
|
|
73
|
+
assert.match(prompt, /Scout is for mapping and reconnaissance only/i);
|
|
74
|
+
assert.match(prompt, /multiple scout subagents in parallel/i);
|
|
75
|
+
assert.match(prompt, /broad review or audit requests, use scout only as a prep step/i);
|
|
76
|
+
assert.match(prompt, /Skip scout only when the task is clearly narrow/i);
|
|
77
|
+
});
|
|
78
|
+
|
|
65
79
|
// ─── Regression: no backslash paths in LLM-visible text ────────────────────
|
|
66
80
|
|
|
67
81
|
/**
|
package/pkg/package.json
CHANGED
|
@@ -9,6 +9,12 @@ You are a scout. Quickly investigate a codebase and return structured findings t
|
|
|
9
9
|
|
|
10
10
|
Your output will be passed to an agent who has NOT seen the files you explored.
|
|
11
11
|
|
|
12
|
+
Scope boundary:
|
|
13
|
+
- Scout is for reconnaissance and mapping only.
|
|
14
|
+
- Do **not** perform full code review, security audit, bug triage, ranking of issues, or final recommendations as if you were the reviewer.
|
|
15
|
+
- If the task asks for review/audit findings, narrow your work to reconnaissance support: identify likely hotspots, relevant files, and questions/risks for a later reviewer.
|
|
16
|
+
- Do not present "top issues" as final judgments; present them as areas worth deeper review.
|
|
17
|
+
|
|
12
18
|
Thoroughness (infer from task, default medium):
|
|
13
19
|
|
|
14
20
|
- Quick: Targeted lookups, key files only
|
|
@@ -2,6 +2,7 @@ import type { ExtensionAPI } from "@gsd/pi-coding-agent";
|
|
|
2
2
|
import auditCommand from "./audit.js";
|
|
3
3
|
import clearCommand from "./clear.js";
|
|
4
4
|
import contextCommand from "./context.js";
|
|
5
|
+
import initCommand from "./init.js";
|
|
5
6
|
import planCommand from "./plan.js";
|
|
6
7
|
import toolSearchExtension from "./tools.js";
|
|
7
8
|
|
|
@@ -9,6 +10,7 @@ export default function slashCommands(pi: ExtensionAPI) {
|
|
|
9
10
|
auditCommand(pi);
|
|
10
11
|
clearCommand(pi);
|
|
11
12
|
contextCommand(pi);
|
|
13
|
+
initCommand(pi);
|
|
12
14
|
planCommand(pi);
|
|
13
15
|
toolSearchExtension(pi);
|
|
14
16
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { getAgentDir, type ExtensionAPI, type ExtensionCommandContext } from "@gsd/pi-coding-agent";
|
|
2
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
|
|
5
|
+
const STARTER_CONTENT = `# Project Context
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
- Add a short description of this project and its purpose.
|
|
9
|
+
|
|
10
|
+
## Commands
|
|
11
|
+
- Build:
|
|
12
|
+
- Test:
|
|
13
|
+
- Lint:
|
|
14
|
+
|
|
15
|
+
## Conventions
|
|
16
|
+
- Add coding conventions, architecture notes, and review expectations.
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
function ensureFile(filePath: string): "created" | "exists" {
|
|
20
|
+
if (existsSync(filePath)) {
|
|
21
|
+
return "exists";
|
|
22
|
+
}
|
|
23
|
+
writeFileSync(filePath, STARTER_CONTENT, "utf-8");
|
|
24
|
+
return "created";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default function initCommand(pi: ExtensionAPI) {
|
|
28
|
+
pi.registerCommand("init", {
|
|
29
|
+
description: "Initialize global and project LSD.md files if they do not exist",
|
|
30
|
+
async handler(_args: string, ctx: ExtensionCommandContext) {
|
|
31
|
+
const globalPath = resolve(getAgentDir(), "..", "LSD.md");
|
|
32
|
+
const projectPath = join(ctx.cwd, "LSD.md");
|
|
33
|
+
|
|
34
|
+
const globalStatus = ensureFile(globalPath);
|
|
35
|
+
const projectStatus = ensureFile(projectPath);
|
|
36
|
+
|
|
37
|
+
await ctx.reload();
|
|
38
|
+
|
|
39
|
+
const lines = ["Initialized LSD.md files", ""];
|
|
40
|
+
lines.push(`Global: ${globalStatus === "created" ? "created" : "exists"} ${globalPath}`);
|
|
41
|
+
lines.push(`Project: ${projectStatus === "created" ? "created" : "exists"} ${projectPath}`);
|
|
42
|
+
|
|
43
|
+
if (globalStatus === "exists" && projectStatus === "exists") {
|
|
44
|
+
lines.push("");
|
|
45
|
+
lines.push("Nothing changed.");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
pi.sendMessage({
|
|
49
|
+
customType: "init:report",
|
|
50
|
+
content: lines.join("\n"),
|
|
51
|
+
display: true,
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|