Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问clear审计通过

stylingstyling 搜索

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

1,640

周安装

67

GitHub Stars

4,461

下载量

525
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:styling(styling 搜索)
来源仓库:https://github.com/epicenterhq/epicenter
仓库路径:skills/styling
安装命令:
npx skills add https://github.com/epicenterhq/epicenter --skill styling
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/epicenterhq/epicenter --skill styling

简介

styling 用于辅助前端页面、组件和样式代码的开发与维护,支持 React、Next.js、Vue、Tailwind 和 CSS 等技术栈。

  • 适用于 UI 组件开发、布局优化和性能问题排查,可生成或审查相关代码并整合到现有设计系统中。
  • 使用时应结合项目路由和构建方式,避免输出孤立片段;涉及页面改动时需配合本地预览验证视觉效果。
  • 安装前建议确认权限范围和维护状态,注意是否会触发文件读写或命令执行,确保与项目结构兼容。
  • styling 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Styling Guidelines

Reference Repositories

When to Apply This Skill

Use this pattern when you need to:

  • Write Tailwind/CSS for UI components in this repo.
  • Decide whether a wrapper element is necessary or can be removed.
  • Style interactive disabled states using HTML disabled and Tailwind variants.
  • Replace JS click guards with semantic disabled behavior.
  • Build scrollable content areas inside flex columns, resizable panes, or split layouts.

Minimize Wrapper Elements

Avoid creating unnecessary wrapper divs. If classes can be applied directly to an existing semantic element with the same outcome, prefer that approach.

Good (Direct Application)

<main class="flex-1 mx-auto max-w-7xl">
	{@render children()}
</main>

Avoid (Unnecessary Wrapper)

<main class="flex-1">
	<div class="mx-auto max-w-7xl">
		{@render children()}
	</div>
</main>

This principle applies to all elements where the styling doesn't conflict with the element's semantic purpose or create layout issues.

Tailwind Best Practices

  • Use the cn() utility from $lib/utils for combining classes conditionally
  • Prefer utility classes over custom CSS
  • Use tailwind-variants for component variant systems
  • Follow the background/foreground convention for colors
  • Leverage CSS variables for theme consistency

Disabled States: Use HTML disabled + Tailwind Variants

When an interactive element can be non-interactive (empty section, loading state, no items), use the HTML disabled attribute instead of JS conditional guards. Pair it with Tailwind's enabled: and group-disabled: variants.

Why disabled Over JS Guards

  • disabled natively blocks clicks—no if (!hasItems) return needed
  • Enables the :disabled CSS pseudo-class for styling
  • Semantically correct for accessibility (screen readers announce "dimmed" or "unavailable")
  • Tailwind's enabled: and group-disabled: variants compose cleanly

Pattern

<!-- The button disables itself when count is 0 -->
<button
  class="group enabled:cursor-pointer enabled:hover:opacity-80"
  disabled={item.count === 0}
  onclick={toggle}
>
  {item.label} ({item.count})
  <ChevronIcon class="group-disabled:invisible" />
</button>

Key Variants

  • enabled:cursor-pointer — pointer cursor only when clickable
  • enabled:hover:bg-accent/50 — hover effects only when interactive
  • group-disabled:invisible — hide child elements (e.g., expand chevron) when parent is disabled
  • disabled:opacity-50 — dim the element when disabled

Anti-Pattern

<!-- Don't do this: JS guard duplicates what disabled does natively -->
<button
  class="cursor-pointer hover:opacity-80"
  onclick={() => { if (item.count > 0) toggle(); }}
>

The JS guard leaves cursor-pointer and hover:opacity-80 active on a non-interactive element. The user sees a clickable button that does nothing. Use disabled and let the browser + CSS handle it.

Flex Column Scroll Trap

When a flex child uses h-full (height: 100%) but shares a flex column with siblings (headers, toolbars, footers), it computes to the *full parent height*—overflowing past siblings instead of taking the *remaining space*. The content gets clipped or pushes the layout past the viewport, and scroll areas inside never activate.

This is the single most common layout bug in this codebase. It appears whenever you have:

  • A component inside a Resizable.Pane (paneforge) that needs to scroll
  • A ScrollArea.Root (bits-ui) or overflow-auto div inside a flex column with a header/toolbar sibling
  • Any split-pane or panel layout where one section should scroll independently

The Fix: flex-1 min-h-0 overflow-hidden

Replace h-full with these three utilities on the flex child that contains scrollable content. Each solves a distinct problem:

UtilityWhat it doesWhy it's needed
flex-1Take remaining space after siblingsh-full = 100% of parent, ignoring siblings. flex-1 = remaining space.
min-h-0Allow shrinking below content sizeFlex items default to min-height: auto, preventing them from being smaller than their content.
overflow-hiddenEstablish a bounded height contextWithout this, children with overflow-auto or ScrollArea have no height ceiling to scroll against.

All three are required. Missing any one breaks the fix:

  • Without flex-1: element is still 100% of parent, overflows siblings
  • Without min-h-0: element refuses to shrink, content pushes it taller
  • Without overflow-hidden: inner scroll containers have no bounded ancestor, so they expand instead of scrolling

Before / After

<!-- BROKEN: h-full = 100% of parent, ignores the toolbar sibling -->
<main class="flex h-full flex-col overflow-hidden">
  <div class="border-b px-4 py-2">Toolbar</div>
  <MyScrollableContent class="h-full" />  <!-- overflows past main -->
</main>

<!-- FIXED: flex-1 takes remaining space, overflow-hidden bounds it -->
<main class="flex h-full flex-col overflow-hidden">
  <div class="border-b px-4 py-2">Toolbar</div>
  <MyScrollableContent class="flex-1 min-h-0 overflow-hidden" />
</main>

Inside Resizable Panes (paneforge)

Paneforge Pane components set width via flex ratios but do not constrain height or clip overflow. Any scrollable content inside a Pane needs the full flex-1 min-h-0 overflow-hidden chain on its root element:

<Resizable.Pane defaultSize={80}>
  <!-- Pane provides no height constraint or overflow clipping -->
  <div class="flex flex-1 min-h-0 flex-col overflow-hidden">
    <div class="border-b">Header</div>
    <div class="flex-1 overflow-y-auto">
      <!-- this content now scrolls -->
    </div>
  </div>
</Resizable.Pane>

With ScrollArea (bits-ui)

ScrollArea.Root renders with position: relative and its viewport uses height: 100%. This breaks the flex sizing chain—the viewport's percentage height resolves against the relative parent, which has no explicit height in a flex context. The content expands instead of scrolling.

Two options:

  1. Prefer plain overflow-y-auto on a div with flex-1 min-h-0 (simpler, always works)
  2. If you need styled scrollbars, wrap ScrollArea.Root in a div with flex-1 min-h-0 overflow-hidden to give it a bounded ancestor
<!-- Option 1: Plain overflow (preferred) -->
<div class="flex-1 overflow-y-auto">
  {#each items as item}
    <div>{item.name}</div>
  {/each}
</div>

<!-- Option 2: ScrollArea with bounded wrapper -->
<div class="flex-1 min-h-0 overflow-hidden">
  <ScrollArea.Root class="h-full">
    {#each items as item}
      <div>{item.name}</div>
    {/each}
  </ScrollArea.Root>
</div>

Rule of Thumb

If you write h-full on a flex child that has siblings in the same flex column, stop and replace it with flex-1 min-h-0 overflow-hidden. The h-full pattern only works when the element is the sole child of its flex parent.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

26.75%
按下载量换算140

Gemini CLI

22.37%
按下载量换算117

Antigravity

16.44%
按下载量换算86

OpenCode

12.63%
按下载量换算66

Codex

7.86%
按下载量换算41

windsurf

3.23%
按下载量换算17

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills