一键导入
frontend-design-system
Use when changing Hussh UI architecture, shared components, shell chrome, or styling rules inside the frontend owner family.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when changing Hussh UI architecture, shared components, shell chrome, or styling rules inside the frontend owner family.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when changing One Voice capability authoring, Kai compatibility runtime contracts, generated action gateway contracts, typed-search and voice parity, persona/workspace gating, or BYOK-safe durable voice memory.
Use when reviewing an incoming pull request for north-star alignment, trust-boundary regressions, malicious or low-signal degradation, stale-vs-current CI interpretation, and true merge readiness beyond a green gate. Also owns PR train planning, merge queue cohorts, maintainer patch-then-merge, contributor harvest decisions, and backlog review waves.
Use when operating reviewer-account browser rehearsals that require BYOK unlock, memory-only decrypted information, and same-session client navigation.
Use when drafting or polishing founder-facing architecture briefs, presentation-grade markdown/html/pdf artifacts, generic report PDFs, Drive/shareable artifacts, or paper-style technical specs that must stay grounded in repo truth.
Use when inspecting, summarizing, creating, triaging, or updating work on the Hussh Engineering Core GitHub board.
Use when changing Morphy AX shared agent-experience state, semantic assessment presentation, performance budgets, or cross-modal compatibility.
| name | frontend-design-system |
| description | Use when changing Hussh UI architecture, shared components, shell chrome, or styling rules inside the frontend owner family. |
frontend-design-systemfrontend-architecture and frontend-surface-placement.spokefrontendOwned repo surfaces:
hushh-webapp/components/uihushh-webapp/lib/morphy-uxhushh-webapp/components/app-uidocs/reference/quality/design-system.mdNon-owned surfaces:
frontendmobile-nativedocs-governancedocs/reference/quality/design.mddocs/reference/quality/design-system.mddocs/reference/quality/frontend-ui-architecture-map.mddocs/reference/quality/app-surface-design-system.mddocs/reference/quality/frontend-pattern-catalog.md.codex/skills/frontend-design-system/references/design-review-kernel.mdyour information onboarding language. Onboarding is One-first with downstream sub-onboardings (Kai/RIA/KYC): model every flow via the registry in hushh-webapp/lib/navigation/onboarding-registry.ts (One is the only account-scoped gate, reappearing only on reset/delete; subs are surface-scoped, independently re-enterable), gate on the authoritative store not the deprecated kai_onboarding_required cookie, and await server completion sync before navigating. See docs/reference/quality/one-onboarding-architecture.md.PKM, manifests, schemas, tokens, thread ids, workflow ids, consent ids, hashes, timings, correlation ids, route names, raw errors, or dummy-save language outside developer-only surfaces.AppPageShell, PageHeader, KaiCommandBarGlobal, and app-ui interaction contracts before adding route-local chrome.morphyToast.promise from @/lib/morphy-ux/morphy tied to the real action promise so one toast morphs loading -> success/error in place; never pair a manual loading toast with a separate success/error toast or fire success before the promise resolves. Confirmation buttons (AlertDialogAction/AlertDialogCancel) carry the shared Material ripple from components/ui/alert-dialog.tsx; do not swap them to the plain @/components/ui/button or strip the ripple host. See the Consumer Copy Contract and Ripple Ownership and Clipping sections in app-surface-design-system.md.agent_kyc.approved_disclosure_formatter.v1 client renderer in hushh-webapp/lib/services/one-kyc-approved-disclosure-renderer.ts through the strict-ZK service. Do not hand-roll route-local email HTML, and keep plaintext/HTML output derived from the same render model.Private, Ask first, and Available by default. Do not show visibility_posture, default_available, scope, manifest, registry, or non-consented export in consumer copy.design-review-kernel.md; challenge incomplete, vague, asymmetric, or noisy UI before shipping the obvious weaker version.ShellActionSurface (SHELL_ICON_BUTTON_CLASSNAME / SHELL_PILL_TRIGGER_CLASSNAME) rather than re-deriving rounded-full + bg-black/[0.05] dark:bg-white/[0.07] + flat hover/press per surface. Sibling controls in one group must share one morphy-ux effect (do not mix glass and fade). See the Control Surface Contract in app-surface-design-system.md.justify-start for launcher grids; route headers use the lean shared PageHeader, and SettingsGroup/SettingsRow own responsive inset rows; do not stretch a small set of icons across a wide card or duplicate route chrome. See the Pixel Grid And Symmetry Contract in app-surface-design-system.md.DialogOverlay; modal popovers opt in with PopoverContent withBackdrop (renders data-slot="popover-scrim" animated by the shared overlay-scrim-* keyframes). Do not hand-roll per-surface scrim opacity, blur, or duration. Bottom navigation centers the primary One, Connect, and Search group, with Search as a segment; Finance/RIA contextual tabs are route-driven inside the unified top shell, never route-local or bottom-navigation tabs. Profile is the rightmost signed-in top-bar control with the shared image/generic fallback. There is exactly ONE app-wide route transition (uniform exit->enter crossfade): useRouteTransition (mounted once in app/providers.tsx) intercepts <a> clicks AND patches the History API once, so every router.push/router.replace inherits the crossfade with zero per-site code — never add a parallel navigation animation (framer-motion template.tsx, View Transitions, per-route motion); a hard-cut screen bypassed router/<a>, so route it through router, and keep EXIT_MS/ENTER_MS in lib/morphy-ux/hooks/use-route-transition.ts synced with --motion-route-exit/enter-duration. See the Overlay Backdrop Contract and Bottom Navigation Contract in app-surface-design-system.md and the Route transitions section in lib/morphy-ux/README.md.components/app-ui/stream-progress-panel.tsx as the shared primitive. Active assistant stream panels must be full-width, progress/thinking/response sections must stay distinct, marketplace opportunity accordions must be preloaded by the workspace when possible, and mobile chat history drawers must use shared glass chrome rather than flat white desktop panes. See the Agent Chat Stream Surface Contract in app-surface-design-system.md..motion-step-enter utility (app/globals.css, motion tokens, reduced-motion safe) - never ad-hoc animate-in fade-in slide-in-* duration-N. Dark chrome tints (bar glass, chrome-glass-surface, morphy-app-bg, route palettes like --one-bg/--one-card) derive from color-mix(in oklab, var(--background) N%, transparent), never hardcoded rgb(28,28,30)/#1c1c1e (lighter than true --background = milky band / "double card" partition). Visualizations are honest: sparklines only from real series scaled to their own min/max, degraded rows get a Delayed chip + flat dashed baseline, never invented always-green paths. Drawer flows (vault unlock) keep ONE surface: no opaque card inside DrawerContent (morphy Card effect="fill" needs !bg-transparent).PageHeader plus one SettingsGroup/SettingsRow list at the reading measure. The first mobile viewport must contain the choices and deferral action; do not add badge clusters, drag-and-drop panels, duplicate CTA buttons, or a setup-terminal action until the user completes or defers a source choice.AmbientChromeMask and lib/morphy-ux/ambient-chrome.ts; both edges render on desktop/mobile with no route gradients or second engine. The top mask spans resolved shell height and has a longer bar-with-tabs feather so underlines never hard-crop.AppPageShell width="reading" owns the gutter and the top shell owns tabs; render one primary PageHeader, never route-local tabs, second fixed headers, or a wider dashboard canvas.frontend.frontend-architecture.frontend-surface-placement.repo-context.cd hushh-webapp && npm run verify:design-system
cd hushh-webapp && npm run verify:cache
cd hushh-webapp && npm run verify:docs
cd hushh-webapp && npm run typecheck